0

我正在制作一个程序,并且有一个需要读取的 .txt 文件,并从中获取命令。文本文档如下所示:

U
R
F 10
D
F 13
Q

我需要从中得到数字。我读取文件的方式来自一个ifstream名为instream. 目前我正在使用

while(instream.get(charVariable)){
    switch(charVariable){
    case 'F': //do the forward command
       break;
    ...
    }
}

forward 命令需要占用该行,它确实需要读取F,跳过空格,并将整数放入int变量中。我对 c++ 很陌生,所以我需要帮助...... 任何帮助都会很棒!谢谢

4

3 回答 3

1

streams当你阅读它们时移动。这意味着当您F从流中读取时,下一个输入是integer. 而且由于它们处理格式化的输入,因此当您使用时,流会为您跳过空白 >>

while(instream >> charVariable)){
    switch(charVariable){
    case 'F': //do the forward command
       int nr;
       instream >> nr;
       // do something with number.
       break;
    ...
    }
}
于 2013-05-09T20:17:31.933 回答
0

基本上,文件流和 i/o 流之间没有太大区别。您可以执行以下操作:

while(!instream.eof())
{
    char command;
    instream >> command;
    switch(command)
    {
        case 'F':
            int F_value;
            instream >> F_value;
            forward(F_value);
            break;

        //...
    }
}
于 2013-05-09T20:24:02.103 回答
0

由于使用的数字可以大于一个字符(即“10”是两个字符),因此最好只使用一个常规整数变量。

int n;
...
instream >> n; //if your switch statement is working this goes inside the 'F' case

然后你可以用 n 做你想做的事(在你将下一个整数读入 n 之前)。

于 2013-05-09T20:34:51.697 回答