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