簡體   English   中英

c_str()似乎從C ++字符串類轉換時消除了一些整數

[英]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.

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