读入文件并解析输入

时间:2015-02-11 22:16:19

标签: c++ fstream ifstream

所以我有一个文件,其中前3行将始终引用“状态”,其余部分将引用“转换”我知道前3行将始终采用相同的格式,并且输入之间的选项卡相同的行,但“转换”的数量是未知的,但总是从第4行开始。

所以我通过

处理了“状态”
for(int i = 0; i < 3; i++){
    myFile >> junk;
    myFile >> stateNum;
    myFile >> designation;
    //make object and put in container
}

现在我需要处理“转换”,所以如果我的输入文件看起来像

state 1 a
state 2 b
state 3 c
trans a b c d &
trans d s i & 3
...
trans 4 e & d g

其中同一行上的所有空格都是制表符,state / trans进入junk因为它们不需要它们因为我知道1-3是状态而余数是转换。我现在如何从第4行的开头开始并继续直到文件的结尾?基本上,我使用if条件来完成这项工作

if(???){
    myFile >> junk;
    myFile >> one;
    myFile >> two;
    ...
    myFile >> five;
    //create object and place in container
}

其中一个,两个,......五个被提前声明,一个,......,五个对应于“trans”之后的5个条目

2 个答案:

答案 0 :(得分:0)

尝试放置

myFile >> junk;
myFile >> stateNum;
myFile >> designation;

在循环之前,然后读取循环内的每个转换,一个while循环,因为你不知道有多少。

答案 1 :(得分:0)

正如Dieter所说,你应该使用stringstream和getline

string line;

while (getline (myFile, line)){
//this will loop until the end of the file
  stringstream line_stream(line); 
  string word; 
  while (line >> word){
  //this will loop until there are words (transitions) on the line)
  //(your code)
}