Posez votre question Signaler

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

DarkBul - Dernière réponse le 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 *'
Lire la suite 

Conversion de std string a const char * »

13 réponses
Réponse
+1
moins plus
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
Rob - 1 avril 2008 à 19:31
Hi, thanks for this, it solved my problem.

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

Merci!
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
system ("%s",cmd);
t'as essayé ?
Ajouter un commentaire
Réponse
+0
moins plus
system (cmd.cs_str());
Ajouter un commentaire
Réponse
+0
moins plus
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>'
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
""+cmd ?
Ajouter un commentaire
Réponse
+0
moins plus
pardon
system (cmd.c_str());
Bonne chance.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

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

Merci Corbeau c'est nikel.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
oups boulette :

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


dsl
Ajouter un commentaire
Réponse
+0
moins plus
avec .c_str()

string hahaha;
const char * hohoho;

hohoho = hahaha.c_str();

voir msdn.com
Ajouter un commentaire
Réponse
+0
moins plus
Adri le sujet a presque un an et a déjà été résolu...
Ajouter un commentaire
Ce document intitulé « Conversion de std string a const char * » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?