[英]c_str() seems to eliminate some integers in converting from C++ string class
我在將從文件中讀取的字符串轉換為整數時遇到困難。
我的代碼如下所示:
Line Raw: 118
Line C:
Elem: 0
Line Raw: 121
Line C:
Elem: 0
Line Raw: 32
Line C: 32
Elem: 32
知道為什么轉換為c_string似乎消除了一些整數嗎?
導致這種情況的實際代碼如下:
vector<int> compressed;
string encodedLine;
while (getline(inputFile, encodedLine)) {
cout << "Line Raw: " << encodedLine << endl;
cout << "Line C: " << encodedLine.c_str() << endl;
int elem = atoi(encodedLine.c_str());
cout << "Elem: " << elem << endl;
compressed.push_back(elem);
}
輸入文件的轉儲:
118
121
32
更新:感謝您的所有快速解答! 問題確實是文件中的NULL字符。 我注意到字符串118顯示為長度4。完成HexDump之后,我看到“ 00 31 31 38”,並確認了這一點。 謝謝!
在不加NULL的情況下如何寫入文件(由我在程序的另一個類中控制)的任何建議?
問題不在標准庫中(令人驚訝),也不在這段代碼中(有點小驚喜)。 它完美地工作:
我懷疑您的輸入文件中包含空字符。
std:string
擁有空字符沒有問題,但是C字符串函數當然會將其視為字符串的結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.