Rechercher : dans
Par :

Conversion de std string a const char *

Dernière réponse le 27 fév 2009 à 10:55:28 DarkBul, le 22 oct 2007 à 15:04:30 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Conversion de std string a const char * » dans :
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...

1

spidag, le 22 oct 2007 à 15:15:19

Bonjour,
system ("%s",cmd);
t'as essayé ?

Répondre à spidag

2

CORBEAU, le 22 oct 2007 à 15:22:26

System (cmd.cs_str());

Répondre à CORBEAU

3

DarkBul, le 22 oct 2007 à 16:10:28

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>'

Répondre à DarkBul

4

spidag, le 22 oct 2007 à 17:16:47

Bonjour,
""+cmd ?

Répondre à spidag

5

CORBEAU, le 22 oct 2007 à 20:17:41

Pardon
system (cmd.c_str());
Bonne chance.

Répondre à CORBEAU

6

DarkBul, le 23 oct 2007 à 09:44:15

Bonjour,

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

Merci Corbeau c'est nikel.

Répondre à DarkBul

7

mamiemando, le 23 oct 2007 à 10:03:02

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

Répondre à mamiemando

8

spinakur, le 13 mar 2008 à 15:34:16

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+

Répondre à spinakur

9

spinakur, le 13 mar 2008 à 15:35:18

Oups boulette :

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


dsl

Répondre à spinakur

10

mamiemando, le 13 mar 2008 à 23:30:57
  • +1

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

Répondre à mamiemando

11

Rob, le 1 avr 2008 à 19:31:46

Hi, thanks for this, it solved my problem.

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

Merci!

Répondre à Rob

12

adri, le 27 fév 2009 à 04:07:53

Avec .c_str()

string hahaha;
const char * hohoho;

hohoho = hahaha.c_str();

voir msdn.com

Répondre à adri

13

 mamiemando, le 27 fév 2009 à 10:55:28

Adri le sujet a presque un an et a déjà été résolu...

Répondre à mamiemando
Collection CommentÇaMarche.net