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

Read from Text File and Save to Two or Three Variables

本文关键字:两个 文本 变量 三个 文件 读取 保存      更新时间:2023-10-16

目前,我有一个程序可以读取文本输入文件,该文件的格式为:

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循环,用于readth和depth来解决这个问题,但我没有遵守。变量只能是两个或三个。感谢您的帮助!

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

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

这是一个框架错误。由于您有以换行符结尾的可选输入,因此您可以查看istream::getline()

我设法解决了以下问题:

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...
                 }
}