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个值。