从文本文件中读取并保存为两个或三个变量
Read from Text File and Save to Two or Three Variables
目前,我有一个程序可以读取文本输入文件,该文件的格式为:
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...
}
}
相关文章:
- 在 c++ 中从文本文件中读取两个十六进制值
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 如何在 c++ 中比较两个文本文件
- 正则表达式 获取两个换行符之间的文本
- C ++将文本存储在数组的不同索引中,并带有一两个
- C++比较两个文本文件的上下文
- 两个循环内的多个文本文件
- 在文本中的两个非唯一字符串之间获取子弦
- 将两个文本文件合并为一个会给出不同的输出
- 合并两个文本文件会产生奇怪的结果
- 使用两个文本文件构建链表
- 如何在两个文本文件中计算不同的数据包编号
- 读入两个文本文件,然后将它们组合在一起
- 用C++将两个文本文件合并到第三个文本文件中
- 库合并两个文本文件
- 合并两个文本文件排序
- 在两个文本文件中找到最常用的单词
- 在两个文本文件中搜索单词
- libgit2 - 两个文本斑点上的差异
- 添加两个文本框浮动值,需要在第三个文本框中显示