所以我有一个文件,其中前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个条目
答案 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)
}