std :: string.c_str()与std :: string的值不同?

use*_*545 1 c++ cstring stdstring

我一直在使用C++字符串并尝试使用C函数来加载char *字符串.由于需要作为一个参数,我一定要投它该是这样的:std::stringstrcpy()strcpy()char *

std::string destination;
unsigned char *source;
strcpy((char*)destination.c_str(), (char*)source);
Run Code Online (Sandbox Code Playgroud)

代码工作正常,当我在调试器中运行程序时,*source存储的值destination,但由于某些奇怪的原因,它不会打印出来的语句

std::cout << destination;

我注意到,如果我使用

std::cout << destination.c_str();

该值打印正确,一切都很好.为什么会这样?有没有更好的方法复制unsigned char*char*进入std::string(stringstreams?)这似乎只有foo.c_str()在复制操作中指定字符串时才会发生.

编辑:要回答"你为什么要这样做?"的问题,我用的strcpy()是一个简单的例子.还有一些时候它比分配更复杂.例如,必须使用strncpy()std::string从C库char *中将函数传递给函数来将X量的字符串A复制到字符串B中,该库作为缓冲区的参数.

Luc*_*ore 8

这就是你想要的

 std::string destination = source;
Run Code Online (Sandbox Code Playgroud)

你所做的事情在很多层面都是错误的...你正在写一个std::string...... 的内在表现......我的意思是......不是很酷的人...它比那复杂得多,数组被调整大小,阅读 - 只有记忆......作品.