【发布时间】:2018-05-02 04:11:36
【问题描述】:
我想知道为什么给出以下内容:
int main()
{
char buf[50];
//char str1[] = "ahoy";
//char str2[] = "matey";
std::string str1 = "ahoy";
std::string str2 = "matey";
sprintf(buf, "%s %s\n", str1, str2);
std::cout << buf;
return 0;
}
当 str1、str2 是字符数组时,我得到 ahoy matey 的预期输出。但是当 str1、str2 是 std::string 时,我会得到乱码输出。这是否与 char 数组实际上就是这样的事实有关,而 std::string 可能在实际 char 数组之前有一些元数据?
【问题讨论】:
-
编译警告是什么?
-
在 C++ 中,通常你会为这种类型的操作使用字符串流而不是 sprintf。
标签: c++