2015-08-03 129 views
1

我正在使用讀取假脫機文件並使用輸出設置緩衝區的函數。 函數返回OK狀態並正確設置readBytes。它還通知閱讀操作已到達文件的末尾。C++字符緩衝區指針錯誤

char* splFileContent = new char[3000]; 
ULONG readBytes; 
int z = cwbOBJ_ReadSplF(splFile, splFileContent, 500, &readBytes, 0); 
//z value is REACHED END OF FILE or OK if read but didn't reach the end of the file. 

的麻煩來試圖將字符緩衝區字符串,我得到「4A」轉換爲字符串值時... enter image description here

我的字符緩衝區這種方式轉換成字符串:

stringstream s; 
s << splFileContent; 
string bufferContent = s.str(); 

我在做什麼錯了?

+0

您可以使用'string bufferContent(splFileContent,readBytes);' – marom

回答

2

看起來像splFileContent是二進制內容而不是可打印字符。

該文件的開始可能包含某種類型的BOM,例如, unicode指標。如果是這樣,您應該首先閱讀物料清單,然後閱讀文件的其餘部分。

注意:除非文件讀取功能在這裏添加NULL,否則一定要附加一個。

+1

將字符串轉換爲ascii?謝謝。 – ProtectedVoid

+1

通常,將字節寬二進制數轉換爲兩個字節寬的十六進制字符串(每個字符的範圍爲[0-9A-F])。你可以使用流,sprintf函數等。有幾種流行的技術。 – Niall