C++ 从文本文件读取并保存为两个或三个变量
目前,我有一个程序,可以读取预期格式为以下格式的文本输入文件:C++ 从文本文件读取并保存为两个或三个变量,c++,input,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 (f
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来修复这个问题,但我没有遵循。变量只有两个或三个。感谢您的帮助 问题在于空格。请记住,换行符也是空白。若要查看出了什么问题,请将所有换行符转换为空格,然后遍历程序。在读取宽度A时,变量将包含以下内容:
cmnd="breadth"
v1='A'
v2='d' // from depth
这是一个帧错误。由于可选输入以换行符结尾,您可以查看
istream::getline()
问题在于空格。请记住,换行符也是空白。若要查看出了什么问题,请将所有换行符转换为空格,然后遍历程序。在读取宽度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...
}
}
我设法找到了如下工作:
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...
}
}