gpt4 book ai didi

c++ - C++ 中的字符串到 const char * 将垃圾放在末尾

转载 作者:太空宇宙 更新时间:2023-11-04 14:39:05 25 4
gpt4 key购买 nike

我有一个结构需要存储 const char * 以备后用。届时字符串将被销毁。到目前为止,我拥有的相同代码是

    HttpRequest* send(string reply)
{
int len = strlen(reply.c_str());
char *buffer = new char[len+1];
strncpy(buffer, reply.c_str(), len);
cout << "LEN:"<<reply.length()<<endl;
cout << "OG:"<<reply<<endl<<"TC:"<<buffer<<endl<<"CS"<<reply.c_str()<<endl;
this->res.response = "test";
return this;
};

res.response 是我要存储值的 char *。我得到的 cout 输出是

LEN:5
OG:hello
TC:hello�������������������q{
CShello

这种行为对我来说很奇怪。有人可以解释我做错了什么吗?上面的代码还显示了我使用 strlen 但我也在 C++ 中使用 length() 得到了相同的结果。

另外值得一提的是,这只会在我第一次调用它时发生,之后一切正常。

最佳答案

永远不要放置空终止符:

char *buffer = new char[len+1];
strncpy(buffer, reply.c_str(), len);
buffer[len] = 0; // <-- HERE

strncpy 不添加它。

关于c++ - C++ 中的字符串到 const char * 将垃圾放在末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com