所以我有一个文件,其中前3行将始终引用“状态”,其余部分将引用“转换”我知道前3行将始终以相同的格式,并在同一行上的投入,但“过渡”的个数之间的标签是未知的,但在文件中读取和解析输入
for(int i = 0; i < 3; i++){
myFile >> junk;
myFile >> stateNum;
myFile >> designation;
//make object and put in container
}
现在在线4
所以我处理的“状态”永远启动我需要处理“转换”,所以如果我的输入文件看起来像
state 1 a
state 2 b
state 3 c
trans a b c d &
trans d s i & 3
...
trans 4 e & d g
其中同一行上的所有空格都是制表符,状态/转换进入junk
,因为它们不是必需的,因为我知道1-3是状态,其余是转换。我现在如何从行4开始并继续直到文件结束?基本上,if
条件做我使用,使这项工作
if(???){
myFile >> junk;
myFile >> one;
myFile >> two;
...
myFile >> five;
//create object and place in container
}
,其中一,二,......五个早些时候宣布,一个,...,五对应5个条目后“反式”
什么读线成一条线串(函数getline),并与istringstream解析参数(使用当前行字符串)? – 2015-02-11 22:23:19
如果你的输入行的语法确实如图所示,'trans'不是*“垃圾”。以*开始的行* not *不能是一个转换,并且循环读取转换应该终止。 – WhozCraig 2015-02-11 23:00:17
@WhozCraig输入非常受控,文本文件中不会有错误。如果这是产品代码或我完全同意,但我知道在这种情况下格式将永远是正确的 – 2015-02-12 19:07:24