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

How to store a const char* in std :: string?

本文关键字:存储 const char string std      更新时间:2023-10-16
    char       *buffer1 = "abc";
    const char *buffer2 = (const char*) buffer;
    std :: string str (buffer2);

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

出路是什么?

您可以重新分配:

const char *buf1 = "abc";
const char *buf2 = "def";
std::string str(buf1);
str = buf2; // Calls str.operator=(const char *)

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

    const char* g;
    g = (const char*)buffer;
    std :: string str;
    str.append (g);

因此,我可以在使用"constchar*"的同一对象上任意多次调用append((函数(在使用clear((之后(。

尽管"push_back"函数不能代替"append"。

str实际上是从buffer2复制字符,因此它没有以任何方式连接。

如果你想让它有另一个值,你只需分配一个新的

str = "Hello";

创建一个类,比如组成字符串缓冲区的MyString。有一个该类的常数。然后u可以在使用相同常量的同时重新分配组成的字符串缓冲区的值。