|
|
|
|
Bonjour,
J'ai écrit ce code mais j'ai une erreur lors de la compilation concernant la ligne system(cmd); car la variables cmd est de type std string et que la commande systeme souhaite une variables de type const char *.
Comment faire pour passé de l'un à l'autre?
void main (void) {
/****** Variables locales ******/
string range, IP, cmd ;
/****** Blocs d'instructions ******/
cout << "Range (xxx.xxx.xxx.) : ";
cin >> range;
for (int i = 1; i <= 255; i++){
// Convert Integer to String (use sstream library)
std::stringstream ConvertStream;
ConvertStream << i;
ConvertStream >> IP;
cmd = ("ping " + range + IP);
system(cmd);
}
}
ERREUR : error C2664: 'system' : cannot convert parameter 1 from 'std::string' to 'const char *'
Configuration: Windows XP Firefox 2.0.0.8
Fais un truc dans ce genre :
#include <sstream>
#include <iostream>
int main(){
int x = 5;
const char *str = "plop";
double y = 69.28;
std::ostringstream oss;
oss << x << ' ' << str << '\t' << y;
const char *res = oss.str().c_str();
std::cout << res << std::endl;
return 0;
}
std::ostringstream -- str() --> std::string -- c_str() --> const char * Bonne chance |
Non il faut utiliser c_str() car data() n'est pas forcément fini d'un '\0' :
#include <string>
#include <iostream>
int main(){
const std::string test = "plop";
std::cout << plop.c_str() << std::endl;
return 0;
}
Bonne chance |