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

8
    char       *buffer1 = "abc";

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

    std :: string str (buffer2);

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

有什么解决方法吗?


1
请澄清您想要做什么,可能附带一个您想要工作的代码示例。(您发布的代码没有太多意义) - Mat
@Mat 啊,就在我发布这个问题后不久,我也找到了简单的解决方案 :doh: std::string str(buffer2); 存储那个 const char* 的一个简单方法是使用 stl 类的 append 函数!比如 std::string str; str.append(buffer2); - Aquarius_Girl
4个回答

17

你可以直接重新赋值:

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

std::string str(buf1);

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

2
啊,好吧,就像我上面评论的那样,在发布问题后不久就找到了答案 :doh:
    const char* g;
    g = (const char*)buffer;

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

因此,我可以在同一对象上使用“const char *”多次调用append()函数(在使用clear()后)。

尽管“push_back”函数无法替换“append”。


3
使用“赋值(assign)”比使用“清除(clear)”加上“追加(append)”更表达得更清晰简洁。但是,直接使用“=”进行简单的赋值同样有效。 - CB Bailey

1

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

如果你想要它有另一个值,只需赋一个新的值即可。

str = "Hello";

-1
创建一个名为MyString的类,它包含一个字符串缓冲区。 在该类中定义一个常量。 然后您可以重新分配组合字符串缓冲区的值,同时使用相同的常量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接