如何将win32 CHAR(char)类型转换为std字符串?

时间:2011-05-07 12:54:34

标签: c++ winapi stdout std

我正在使用win32函数ReadFile:

CHAR lpBuffer[256];
DWORD nBytesRead;
DWORD nCharsWritten;

ReadFile(hPipeRead,lpBuffer,sizeof(lpBuffer),
                                      &nBytesRead,NULL) || !nBytesRead)

现在我将stdout的响应插入到lpBuffer中,我喜欢将它转换为std字符串,问题是当我做简单时:

std::string szReturnlpBuffer(lpBuffer); 

szReturnlpBuffer的值在真正的字符串之后包含很多garbege carecthers: 它看起来像是szReturnlpBuffer值:

  

“我是Qt   applicationÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ“

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

您需要指定字符串的大小:

std::string szReturnlpBuffer(lpBuffer, nBytesRead); 

因为否则它会一直读取,直到找到一个空字符,当它到达lpBuffer的内存时会导致未定义的行为。

答案 1 :(得分:0)

您需要使用空字符终止字符串:

lpBuffer[nBytesread] = '\0';