如何在std::string中存储const char*
How to store a const char* in std :: string?
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可以在使用相同常量的同时重新分配组成的字符串缓冲区的值。