Conversion de std string a const char * [Résolu/Fermé]

- - Dernière réponse : mamiemando
Messages postés
29016
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 octobre 2019
- 27 févr. 2009 à 10:55
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 *'
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
29016
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 octobre 2019
6662
2
Merci
Non il faut utiliser c_str() car data() n'est pas forcément fini d'un '\0' :
http://www.sgi.com/tech/stl/basic_string.html

Ainsi :
#include <string>
#include <iostream>

int main(){
  const std::string test = "plop";
  std::cout << plop.c_str() << std::endl;
  return 0;
}

Bonne chance

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62878 internautes nous ont dit merci ce mois-ci

Hi, thanks for this, it solved my problem.

(I read french fine, but I won't embarrass myself trying to write it)

Merci!
1
Merci
oups boulette :

std::string test = "salut";
const char* resalut = test.data();
std::cout << resalut << std::endl;


dsl
0
Merci
Bonjour,
system ("%s",cmd);
t'as essayé ?
0
Merci
system (cmd.cs_str());
0
Merci
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>'
0
Merci
Bonjour,
""+cmd ?
0
Merci
pardon
system (cmd.c_str());
Bonne chance.
0
Merci
Bonjour,

Spidag : error C2664: 'system' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Ax>' to 'const char *'

Merci Corbeau c'est nikel.
Messages postés
29016
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 octobre 2019
6662
0
Merci
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
0
Merci
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+
0
Merci
avec .c_str()

string hahaha;
const char * hohoho;

hohoho = hahaha.c_str();

voir msdn.com
Messages postés
29016
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 octobre 2019
6662
0
Merci
Adri le sujet a presque un an et a déjà été résolu...