Как сохранить const char * в std :: string? - PullRequest
6 голосов
/ 02 июня 2011
    char       *buffer1 = "abc";

    const char *buffer2 = (const char*) buffer;

    std :: string str (buffer2);

Это работает, но я хочу объявить объект std :: string , т.е. str , один раз и использовать его много раз для хранения различных const char *.

Какой выход?

Ответы [ 4 ]

14 голосов
/ 02 июня 2011

Вы можете просто переназначить:

const char *buf1 = "abc";
const char *buf2 = "def";

std::string str(buf1);

str = buf2; // Calls str.operator=(const char *)
1 голос
/ 02 июня 2011

Ну, как я уже говорил выше, вскоре после публикации вопроса нашел ответ: doh:

    const char* g;
    g = (const char*)buffer;

    std :: string str;
    str.append (g);

Итак, я могу вызывать функцию append () столько раз (после использования clear ()), как я хочу для того же объекта с "const char *".

Хотя функция "push_back" не будет работать вместо "append".

1 голос
/ 02 июня 2011

str фактически копирует символы из buffer2, поэтому он никак не связан.

Если вы хотите, чтобы оно имело другое значение, вы просто назначаете новое

str = "Hello";
0 голосов
/ 02 июня 2011

Создайте класс скажем MyString, который составляет буфер String. Иметь константу этого класса. и затем вы можете переназначить значение составного строкового буфера, используя ту же константу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...