此代码:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
const char *filename_param="Simion_PA_Config.txt";
int x_min,x_length,y_min,y_length,z_min,z_length;
ifstream file_param;
template <typename T> void GetParameterSkipLine(ifstream &file,T ¶meter);
int main(){
file_param.open(filename_param);
if(!file_param){
cout << "Couldn't open parameter file" << endl;
exit(0);
}
GetParameterSkipLine(file_param,x_min);
GetParameterSkipLine(file_param,x_length);
GetParameterSkipLine(file_param,y_min);
GetParameterSkipLine(file_param,y_length);
GetParameterSkipLine(file_param,z_min);
GetParameterSkipLine(file_param,z_length);
cout << x_min << " " << y_min << " " << z_min << endl;
cout << x_length << " " << y_length << " " << z_length << endl;
}
template <typename T> void GetParameterSkipLine(ifstream &file,T ¶meter){
string s;
getline(file,s);
stringstream line(s);
file >> parameter;
}
阅读此文件:
0 !x_min //
150
0
40
0
300
5 1.2
10 1.3
15 0
5 15
2 20
输出:
150 40 300
0 0 5
一切都表现得好像是在我的文本文件中跳过一行。如果我添加虚假行,一切都有效。我不知道发生了什么。
我尝试重新制作文本文件,在另一个编辑器中打开它。我已经删除了我的代码以隔离问题并编译上面看到的内容,问题仍然存在。
请帮助,我可能会开始在O(N ^ 3)中进行排序,如果这样可以减少我的理智。
答案 0 :(得分:2)
string s;
getline(file,s);
然后用
读取另一行file >> parameter;
所以基本上,你把你读到的内容扔掉了。
答案 1 :(得分:1)
更改
file >> parameter;
到
line >> parameter;