簡體   English   中英

如何將win32 CHAR(char)類型轉換為std字符串?

[英]How to convert win32 CHAR(char) type to std string?

我正在使用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應用程序的標准輸出ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ”

我在這里做錯了什么?

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

std::string szReturnlpBuffer(lpBuffer, nBytesRead); 

因為否則它將一直讀取直到找到一個空字符,當它到達lpBuffer的內存之外時會導致未定義的行為。

您需要使用空字符來終止字符串:

lpBuffer[nBytesread] = '\0';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM