2010-03-06 6 views
5

J'ai une chaîne et j'ai besoin d'ajouter un numéro à un i.e int. comme:Comment puis-je ajouter un int à une chaîne

string number1 = ("dfg"); 
int number2 = 123; 
number1 += number2; 

voici mon code:

name = root_enter;    // pull name from another string. 
size_t sz; 
sz = name.size();    //find the size of the string. 

name.resize (sz + 5, account); // add the account number. 
cout << name;     //test the string. 

cela fonctionne ... un peu, mais je n'obtenir le "* nom * 88888" et ... je ne sais pas pourquoi. J'ai juste besoin d'un moyen d'ajouter la valeur d'un int à la fin d'une chaîne

+0

"je ne sais pas pourquoi". Le deuxième paramètre à 'resize' est un char, et le resize l'utilise à plusieurs reprises pour remplir tout espace supplémentaire créé à la fin de la chaîne. Dans votre cas, 'account' est égal à 56 (mod 256), vous avez donc passé le caractère' 8'. –

Répondre

4

Utilisez un stringstream.

#include <iostream> 
#include <sstream> 
using namespace std; 

int main() { 
    int a = 30; 
    stringstream ss(stringstream::in | stringstream::out); 

    ss << "hello world"; 
    ss << '\n'; 
    ss << a; 

    cout << ss.str() << '\n'; 

    return 0; 
} 
+0

xD yay ça marche Tyvm – blood

5

Il n'y a pas d'opérateurs intégrés qui font cela. Vous pouvez écrire votre propre fonction, surcharger un operator+ pour un string et un int. Si vous utilisez une fonction personnalisée, essayez d'utiliser un stringstream:

string addi2str(string const& instr, int v) { 
stringstream s(instr); 
s << v; 
return s.str(); 
} 
+0

"Il n'y a pas d'opérateurs intégrés qui font cela." Je suis déçu. Eh bien, je suppose qu'ils ne pouvaient pas penser à * tout * ... –

1

Utilisez un stringstream.

int x = 29; 
std::stringstream ss; 
ss << "My age is: " << x << std::endl; 
std::string str = ss.str(); 
+0

ou utiliser ostringstream pour être précis. – cpx

4

Vous pouvez utiliser les flux de chaîne:

template<class T> 
std::string to_string(const T& t) { 
    std::ostringstream ss; 
    ss << t; 
    return ss.str(); 
} 

// usage: 
std::string s("foo"); 
s.append(to_string(12345)); 

Vous pouvez également utiliser des utilitaires comme Renforce lexical_cast():

s.append(boost::lexical_cast<std::string>(12345)); 
0

vous pouvez utiliser lexecal_cast de boost, puis C itoa et bien sûr stringstream de STL

Questions connexes