versiones tipos resueltos ejercicios ejemplos dev datos caracteristicas caracteres cadenas cadena c++ string cstring

tipos - Convertir una cadena de estilo C en una cadena C++ std::



tipos de datos en c++ (6)

En general (sin declarar nuevo almacenamiento), solo puede usar el constructor 1-arg para cambiar la cadena-c en un valor de cadena:

string xyz = std::string("this is a test") + std::string(" for the next 60 seconds ") + std::string("of the emergency broadcast system.");

Sin embargo, esto no funciona al construir la cadena para pasarla por referencia a una función (un problema que acabo de encontrar), por ejemplo

void ProcessString(std::string& username); ProcessString(std::string("this is a test")); // fails

Necesitas hacer de la referencia una referencia constante:

void ProcessString(const std::string& username); ProcessString(std::string("this is a test")); // works.

¿Cuál es la mejor manera de convertir una cadena de estilo C en una cadena C ++ std::string ? En el pasado lo he hecho usando stringstream s. ¿Hay alguna manera mejor?


Las cadenas C ++ tienen un constructor que te permite convertir cadenas de estilo C:

char* myStr = "This is a C string!"; std::string myCppString = myStr;


Puedes inicializar un std::string directamente desde un c-string:

std::string s = "i am a c string"; std::string t = std::string("i am one too");


Si te refieres a char* to std::string , puedes usar el constructor.

char* a; std::string s(a);

O si la string s ya existe, simplemente escribe esto:

s=std::string(a);


Verifique los diferentes constructores de la clase de cadena: documentation le puede interesar:

//string(char* s) std::string str(cstring);

Y:

//string(char* s, size_t n) std::string str(cstring, len_str);


C++11 : Sobrecargar un operador literal de cadena

std::string operator ""_s(const char * str, std::size_t len) { return std::string(str, len); } auto s1 = "abc/0/0def"; // C style string auto s2 = "abc/0/0def"_s; // C++ style std::string

C++14 : usar el operador desde el std::string_literals nombres std::string_literals

using namespace std::string_literals; auto s3 = "abc/0/0def"s; // is a std::string