我正在使用 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 的值在真实字符串之后包含大量垃圾信息: 它看起来像这样的 szReturnlpBuffer 值:
"Im stdout from the Qt applicationÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ"
我在这里做错了什么?
最佳答案
您需要指定字符串的大小:
std::string szReturnlpBuffer(lpBuffer, nBytesRead);
因为否则它会一直读取直到找到一个空字符,当它超出 lpBuffer
的内存时会导致未定义的行为。
关于c++ - 如何将 win32 CHAR(char) 类型转换为标准字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921186/