Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2818 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  conversion string -> char *

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

conversion string -> char *

n°690569
cricri_
Posté le 02-04-2004 à 10:23:53  profilanswer
 

Je suis pourtant quasi sûr de l'avoir déjà vu dans un topic, mais je n'arrive pas à le retrouver ... :pfff:  
Donc voilà c'est un prog en c++ qui utilise des string, mais il fait appel à une dll en c qui attend un char * en argument, y a moyen de faire simple ? ou bien faut-il passer par un Format d'abord puis recopie dans un buffer de char ?

mood
Publicité
Posté le 02-04-2004 à 10:23:53  profilanswer
 

n°690581
skeye
Posté le 02-04-2004 à 10:37:17  profilanswer
 

cricri_ a écrit :

Je suis pourtant quasi sûr de l'avoir déjà vu dans un topic, mais je n'arrive pas à le retrouver ... :pfff:  
Donc voilà c'est un prog en c++ qui utilise des string, mais il fait appel à une dll en c qui attend un char * en argument, y a moyen de faire simple ? ou bien faut-il passer par un Format d'abord puis recopie dans un buffer de char ?


std::string.c_str()?


Message édité par skeye le 02-04-2004 à 10:37:56
n°690609
Taz
bisounours-codeur
Posté le 02-04-2004 à 10:58:11  profilanswer
 

pour un const char * ça ira

n°690628
cricri_
Posté le 02-04-2004 à 11:07:24  profilanswer
 

Ok, merci à vous 2

n°690687
cricri_
Posté le 02-04-2004 à 11:57:03  profilanswer
 

Flûte ... c'est un char *, j'ai fait un cast de sauvage ...  :heink:  
Je suppose qu'il n'y a pas moyen de faire mieux ?

n°690693
Taz
bisounours-codeur
Posté le 02-04-2004 à 12:07:49  profilanswer
 

le cast sauvage va pas marcher, parce que tu ne peux pas modifier ce que te file la std::string.
 
pour bien faire
 

Code :
  1. std::vector<char> buffer(s.begin(), s.end());
  2. fonction_c(&buffer[0]);


 
avec bien buffer.size() == s.size() >= strlen(s.c_str())

n°690703
Taz
bisounours-codeur
Posté le 02-04-2004 à 12:20:07  profilanswer
 

Code :
  1. // ça me semble un bon exemple
  2. #include <vector>
  3. #include <string>
  4. #include <iostream>
  5. inline void Taz(char *c)
  6. {
  7.   if(strlen(c) >= (sizeof "TazForEver" - 1))
  8.     {
  9.       std::memcpy(c, "TazForEver", sizeof "TazForEver" - 1);
  10.     }
  11. }
  12. int main()
  13. {
  14.   std::string line;
  15.   while(std::getline(std::cin, line))
  16.     {
  17.      
  18.       std::vector<char> buffer(line.begin(), line.end());
  19.       if(buffer.back() != '\0')
  20. {
  21.   buffer.push_back('\0');
  22. }
  23.       Taz(&buffer[0]);
  24.       line.assign(buffer.begin(), buffer.end());
  25.       std::cout << line << '\n';
  26.     }
  27. }


Message édité par Taz le 02-04-2004 à 12:21:53
n°690761
cricri_
Posté le 02-04-2004 à 13:31:23  profilanswer
 

Merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  conversion string -> char *

 

Sujets relatifs
probleme pointeur void alors qu'un cast de char* marche :\Comment transformer un Array en String
convertir un String en Datefonction char -> bool
petite conversion asm -> hexa[C#] Créer 1 instance d'1 classe en connaissant son nom (string)
convertir un string en double, question APISupprimer les caracteres invisibles dans un string
[ASM] Conversion entier en chaine decimalString en format HTML
Plus de sujets relatifs à : conversion string -> char *


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR