2010-03-06 17 views
5

tengo una cadena y necesito agregarle un número, es decir, una int. como:cómo agrego un int a una cadena

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

este es mi código:

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. 

esto funciona ... un poco, pero solo me dan el "* nombre * 88888" y ... no sé qué. solo necesito una manera de agregar el valor de un int al final de una cadena

+0

"No sé por qué". El segundo parámetro para 'resize' es un carácter, y el cambio de tamaño lo usa repetidamente para completar cualquier espacio adicional que crea al final de la cadena. En su caso 'account' es igual a 56 (mod 256), por lo que ha pasado el caracter' 8'. –

Respuesta

4

Utilice 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 funciona Tyvm – blood

5

No hay operadores integrados que hagan esto. Puede escribir su propia función, sobrecargar operator+ para string y int. Si utiliza una función personalizada, intente utilizar un stringstream:

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

"No hay operadores integrados que hagan esto". Estoy decepcionado. Oh, bueno, creo que no podían pensar en * todo * ... –

1

Utilice un stringstream.

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

o usar ostringstream para ser precisos. – cpx

4

Puede utilizar las corrientes de cadena:

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)); 

Alternativamente, puede utilizar utilidades como Aumenta lexical_cast():

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

puede utilizar lexecal_cast de impulso, entonces C itoa y por supuesto stringstream de STL

Cuestiones relacionadas