C++,从文件写入地图

C++, write from file into map

我是 C++ 的新手,我尝试从文件中读取内容并将内容写入 map。 但是只有我的文件的第一个元素被映射,我不知道为什么。

文件如下所示:

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, '[=11=]')) {
            ch = line[0];
            sub = line.substr(2);
            fl = std::stof(sub);
            frequenciesM[ch] = fl;

        }
    }

当我尝试打印地图的大小和内容时,我得到的是:

Size: 1
E: 16.93

感谢任何帮助和建议!

您告诉 getline() 读取直到遇到 '[=13=]' (nul) 字符,但您的文件中没有这样的字符,因此整个文件被读入 string 在第一次调用时,然后您仅从 string 中提取第一组值,丢弃其余数据。

要读取文件line-by-line,您需要将getline()的第3个参数改为'\n'

while (std::getline(frequencieFile, line, '\n'))

或者,完全删除第三个参数,因为 '\n' 是默认分隔符:

while (std::getline(frequencieFile, line))