簡體   English   中英

C++ 字符串中的空字符?

[英]C++ Null characters in string?

我想讀取一個 txt 文件並將每行中的兩個單元格轉換為浮點數。

如果我第一次運行:

someString = someString.substr(1, tempLine.size());

接着:

std::stof(someString)

它只將“someString”中的第一個數字轉換為數字。 其余的字符串丟失。 當我在 IDE 中處理字符串時,我注意到復制它並將其粘貼在引號內會給我"\5\7\.\7\1\7\7\"而不是57.7177

如果我改為:

std::string someOtherString = "57.7177"

std::stof(someOtherString)

我得到57.7177

最小的工作示例是:

int main() {

std::string someString = "\u00005\u00007\u0000.\u00007\u00001\u00007\u00007\u0000";
float someFloat =  std::stof(someString);
return 0;
}

使用 UTF-8 和 -16 編碼也會出現同樣的問題。

發生了什么,我應該怎么做? 我應該以某種方式刪除空字符嗎?

“我想讀一個txt文件”

文本文件的編碼是什么? “文本”不是編碼。 我懷疑正在發生的是您編寫的代碼以 UTF8 或 Windows-1250 編碼讀入文件,並將其存儲在std::string 從字節中,我可以看到該文件實際上是 UTF16BE,因此您需要讀入std::u16string 如果您的程序只能在 Windows 上運行,那么您可以使用std::wstring

您可能有后續問題,但您最初的問題很模糊,我無法預測這些問題會是什么。

暫無
暫無

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

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