我是 C 的新手,我嘗試從檔案中讀取內容并將內容寫入 map<string, float>。但是只有我檔案的第一個元素被映射,我無法弄清楚為什么。
該檔案如下所示:
E:16.93
N:10.53
I:8.02
...
到目前為止,我為此部分獲得的代碼:
std::map<char, float> frequenciesM;
fstream frequencieFile("frequencies.txt", std::ios::in);
if(!frequencieFile){
cout << "No such File!";
}else{
std::string line;
char ch;
std::string sub;
float fl;
while (std::getline(frequencieFile, line, '\0')) {
ch = line[0];
sub = line.substr(2);
fl = std::stof(sub);
frequenciesM[ch] = fl;
}
}
當我嘗試列印出我的地圖的大小和內容時,這就是我得到的:
Size: 1
E: 16.93
感謝您提供任何幫助和建議!
uj5u.com熱心網友回復:
您getline()要讀取直到'\0'遇到(nul)字符,但檔案中沒有這樣的字符,因此整個檔案string在第一次呼叫時被讀入,然后您僅從 , 中提取第一組string值丟棄其余資料。
要逐行讀取檔案,您需要將第三個引數更改getline()為'\n':
while (std::getline(frequencieFile, line, '\n'))
或者,完全洗掉第三個引數,因為'\n'它是默認分隔符:
while (std::getline(frequencieFile, line))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458902.html
