我一直在使用 C++ 字符串,并尝试char *
使用std::string
C 函数(例如strcpy()
. 由于strcpy()
需要char *
作为参数,因此我必须将其转换为如下所示:
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()
一个简单的例子。有时它比分配更复杂。例如,必须将仅 X 数量的字符串 A 复制到字符串 B 中,使用strncpy()
或将 a 传递std::string
给 C 库中的函数,该函数将 achar *
作为缓冲区的参数。