从文本文件中读取并保存为两个或三个变量

时间:2016-04-27 22:07:11

标签: c++ input

目前,我有一个程序可以从文本输入文件中读取,该文件应采用以下格式:

add A B
add A C
add B D
breadth A
depth A
remove A B
add B A
breadth B
depth B

但是,我写的程序是:

int main(int argc, char **argv){

        ifstream fin(argv[1]);

        string cmnd;
        char v1, v2;


        while (fin >> cmnd >> v1 >> v2){

                     if (cmnd == "add"){
                             //do something
                     }

                     if (cmnd == "remove"){
                             //do something
                     }

                     if (cmnd == "breadth"){
                             //do something
                     }

                     if (cmnd == "depth"){
                             //do something
                     }
         }

当然,当它到达文本文件中只有两个变量的行时结束,例如“广度A”或“深度A”。有人很快就亲自向我建议我可以添加第二个嵌套while循环来获取读数和深度来解决这个问题,但我没有遵循。变量只会是两个或三个。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:1)

问题在于空白。请记住,换行符也是空格。要查看出现了什么问题,请将所有换行符转换为空格并遍历该程序。在您阅读breadth A时,您的变量将包含以下内容:

cmnd="breadth"
v1='A'
v2='d' // from depth

这是一个框架错误。由于您使用换行符终止了可选输入,因此您可以查看istream::getline()

答案 1 :(得分:1)

我设法解决了以下问题:

int main(int argc, char **argv){

          ifstream fin(argv[1]);

          string cmnd;
          char v1, v2;

          while (fin >> cmnd){

                if (cmnd == "add"){
                    (fin >> v1 >> v2);
                     //do something
                }

                if (cmnd == "breadth"){
                    (fin >> v1); 
                    //etc...
                 }

}