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))
我是 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))