简单的C++代码跳过文本文件中的一行
Simple C++ code is skipping a line in text file
此代码:
#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) 中排序。
你在那里犯了一个错误。您从文件中读取了一行 string s;
getline(file,s);
然后你读另一行
file >> parameter;
所以基本上,你把你读到的东西扔掉了。
更改
file >> parameter;
自
line >> parameter;
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何使代码打印文本文件中的第一行?
- 如何在C++中以这种方式返回一行文本?
- 如何格式化我的文本文件以使其不会一遍又一遍地重复同一行?
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- 需要从存档中读取一行文本.txt直到找到"hhh",然后转到下一行
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 到达分隔符时跳到文本文件的下一行
- 从文本文件中读取一行并将其存储在 C++ 中的 2D 矢量中
- 从文本文件中随机选取一行
- 以 LPCTSTR 开头编写另一行文本的最佳方法是什么?
- C++ ->尝试逐字阅读一行文本。如何使指针等效于用于存储输入的当前二维数组
- 如何让控制台在输入一行文本时输出某些内容
- 如何使用预处理器从源文件中获取一行文本
- 用c++将文件中的一行文本复制到字符串中
- 如何在控制台项目中重写一行文本?c++
- 如何从文件中读取一行文本而不跳过空行?
- 使用正则表达式从C++中的一行文本中提取数据
- 如何在不知道一行文本有多少元素的情况下读取每个元素?(c++)
- 在C++中读取一些整数,然后读取一行文本