Conversion de std string a const char *
Résolu
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 *'
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
12 réponses
-
Non il faut utiliser c_str() car data() n'est pas forcément fini d'un '\0' :
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Ainsi :#include <string> #include <iostream> int main(){ const std::string test = "plop"; std::cout << plop.c_str() << std::endl; return 0; }
Bonne chance -
oups boulette :
std::string test = "salut"; const char* resalut = test.data(); std::cout << resalut << std::endl;
dsl -
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
spidag ton code retourne: error C2660: 'system' : function does not take 2 arguments
corbeau ton code retourne: error C2039: 'cs_str' : is not a member of 'std::basic_string<_Elem,_Traits,_Ax>' -
-
-
Bonjour,
Spidag : error C2664: 'system' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Ax>' to 'const char *'
Merci Corbeau c'est nikel. -
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 -
salut un peut tard
peut etre
mais tu devrais essayer ca :std::string test = "salut"; const char* resalut = test.data(); std::cout << test << std::endl;
la theoriquement ca devrais marcher
il se peut que j'ecrive dans le vide mais la reponse servira a ceux qui cherche encore
a+ -
-
Adri le sujet a presque un an et a déjà été résolu...