如何在std :: string中存储const char *?

时间:2011-06-02 11:53:19

标签: c++ string pointers stl

    char       *buffer1 = "abc";

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

    std :: string str (buffer2);

这有效,但我想声明 std :: string 对象,即 str 一次并多次使用它来存储不同的 const char *。

出路是什么?

4 个答案:

答案 0 :(得分:14)

你可以重新分配:

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

std::string str(buf1);

str = buf2; // Calls str.operator=(const char *)

答案 1 :(得分:1)

str实际上正在复制buffer2中的字符,因此它没有以任何方式连接。

如果您希望它具有其他值,则只需指定一个新值

str = "Hello";

答案 2 :(得分:1)

好吧,正如我上面评论的那样,在发布问题之后不久就找到了答案:doh:

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

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

所以,我可以多次调用append()函数(在使用clear()之后)和“const char *”一样调用同一个对象。

虽然“push_back”功能无法取代“追加”。

答案 3 :(得分:0)

创建一个类说MyString组成String缓冲区。 有一个常数的那个班级。 然后你可以重新分配组合字符串缓冲区的值,同时使用相同的常量。