我在理解我的代码的此输出时遇到了一些麻烦:
#define MAX 5
char pipeNames[MAX][1024];
string s1 = "\\\\.\\p\\p1";
string s2 = "\\\\.\\p\\p2";
int len1 = strlen(s1.c_str());
int len2 = strlen(s2.c_str());
memcpy((void*)pipeNames[0], (void*)s1.c_str(), len1);
memcpy((void*)pipeNames[1], (void*)s2.c_str(), len2);
cout<<pipeNames[0];
cout<<endl<<len1;
cout<<endl<<pipeNames[1];
cout<<endl<<len2;
实际输出:
\\.\p\p1É┼é|
8
\\.\p\p2
8
预期输出:
\\.\p\p1
8
\\.\p\p2
8
为什么在 pipeNames[0] 的末尾会打印额外的字符。我正在使用 string::c_str() 自动附加空字符,那么为什么会出错?