我一直在使用C++字符串,并尝试使用C函数(如strcpy()
)将char *
字符串加载到std::string
中。由于strcpy()
需要char *
作为参数,我一定要投它该是这样的:std :: string.c_str()与std :: string有不同的值吗?
std::string destination;
unsigned char *source;
strcpy((char*)destination.c_str(), (char*)source);
的代码工作正常,当我在调试器中运行该程序的*source
的值存储在destination
,但一些奇怪的原因,它不会与语句打印出
std::cout << destination;
我注意到,如果我用
std::cout << destination.c_str();
值打印正确,一切正常。为什么会发生?有没有更好的方法将unsigned char*
或char*
复制到std::string
(字符串流?)这似乎只有当我在复制操作中将字符串指定为foo.c_str()
时才会发生。
编辑:要回答“你为什么要这样做?”这个问题,我使用strcpy()
作为一个简单的例子。还有些时候它比分配更复杂。例如,必须使用strncpy()
仅将X数量的字符串A复制到字符串B中,或将std::string
传递给C库中的函数,该函数将char *
作为缓冲区的参数。
所以,你忽略了你的编译器给你的错误,并决定关闭它,把它转换为'(char *)'?你想知道为什么你有问题? –
为什么你不使用: destination = source; – Morwenn
所有的答案都会问隐含的问题为什么?为什么? – rerun