преобразование строки стиля c в строку стиля c ++ - PullRequest
17 голосов
/ 11 февраля 2010

Может кто-нибудь сказать мне, как преобразовать строку стиля C (то есть символ *) в строку стиля C ++ (т.е. std :: string) в программе на C ++?

Большое спасибо.

Ответы [ 4 ]

24 голосов
/ 11 февраля 2010

std::string может принимать char * в качестве конструктора параметра и через несколько операторов.

char * mystr = "asdf";
std::string mycppstr(mystr);

или для адвокатов по языку

const char * mystr = "asdf";
std::string mycppstr(mystr);
9 голосов
/ 11 февраля 2010
char* cstr = //... some allocated C string

std::string str(cstr);

Содержимое cstr будет скопировано в str.

Это можно использовать и в таких операциях, как:

std::string concat = somestr + std::string(cstr);

Где somestr это уже `std :: string``

3 голосов
/ 11 февраля 2010

Вы можете использовать конструктор класса string , который принимает char* в качестве аргумента.

char *str = "some c style string";
string obj(str);
0 голосов
/ 11 февраля 2010

Другой способ сделать преобразование - вызвать функцию, которая принимает const std::string& в качестве параметра:

void foo(const std::string& str);

void bar()
{
    char* str= ...

    foo(str);
}

Я думаю, что гораздо удобнее выполнять преобразование на границе вызова функции.

...