C++ 从文件中读取多个变量类型
我有一个文件如下所示:C++ 从文件中读取多个变量类型,c++,C++,我有一个文件如下所示: 5,4,A 6,3,A 8,7,B 7,6,B 5,2,A 9,7,B 我试图创建一个类函数,该函数读取一行并将内容分别插入到x、y和类中。变量类型为int x、y和char类。从这一点上,我可以创建一个名为sample1的类的对象,它将包含文件中相应行中的x、y和featClass 为了澄清,每一行代表一个样本。我将为每个采样线创建一个类的对象,并将对象命名为sample1、sample2等 在将代码插入到类函数之前,我编写代码以读取main中的文件,以确保其正常工作
5,4,A
6,3,A
8,7,B
7,6,B
5,2,A
9,7,B
我试图创建一个类函数,该函数读取一行并将内容分别插入到x、y和类中。变量类型为int x、y和char类。从这一点上,我可以创建一个名为sample1的类的对象,它将包含文件中相应行中的x、y和featClass
为了澄清,每一行代表一个样本。我将为每个采样线创建一个类的对象,并将对象命名为sample1、sample2等
在将代码插入到类函数之前,我编写代码以读取main中的文件,以确保其正常工作。但是,当我运行程序并将第一行读入x、y和featClass时,每个变量的结果值分别为1,0、P,这与第一行5,4、A不匹配
以下是我目前的代码:
#include <iostream>
#include <cmath>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
//init variables
int x,y;
char featClass;
//get x,y, and output params from input file
char filename[50];
ifstream sampleFile("sampleFile.txt");
//cin.getline(filename,50);
sampleFile.open(filename);
if(!sampleFile.is_open())//check if file is not open
{
exit(EXIT_FAILURE);//terminates program if file is not opened correctly
};
while(sampleFile.peek() == ',')
{
sampleFile.ignore(1);`
sampleFile >> x >> y >> featClass;
};
cout << x << " " << y << " " << featClass << endl;
return 0;
}
我想知道为什么我的代码将1,0,p输出到x,y和featclass中。我注意到一个'after sampleFile.ignore1; 我要做的是创建一个for语句,遍历每个字符,查找1的匹配项,如果找到,则删除它。而不是cin.peek,您应该使用getline来读取整行
while(getline(sampleFile, line))
{
//do stuff here
};
然后,解析该行并使用stringstream将值存储到x、y和featClass中
因此,您的代码读取文件并对其进行解析看起来类似于:
char ch; <-- include this for comma
while(getline(sampleFile, line))
{
//do stuff here
stringstream sstream(line);
//this is for your particular problem as your file format is --> int, int, char
sstream >> x >> ch >> y >> ch >> featClass;
cout << x << " " << y << " " << featClass << endl;
};
查看此链接以阅读并了解有关stringstream的更多信息
我不明白的是为什么它会返回这些值?在我读取的文本文件的任何地方都找不到这3个值。