【发布时间】:2020-02-28 03:00:51
【问题描述】:
我在阅读代码时遇到了一些问题。这是文本文件。
2X^6+3X^3+4X^0=0
5X^6+X^2+X^1-4X^0=0
我得到了第一行的正确输入,但在第二行首先我需要忽略。我在这里搜索并找到了如何使用它,它可以忽略第一行的所有剩余字符而进入下一行。
你可以在第二行看到 X 没有整数,现在问题是第二个 while 循环连续运行。如果我在带有 X 的文本文件中添加 1 ,则文件会完美读取。另外我如何设置一个条件来满足这一点,即当直接存在 X 或 -X 时,它应该存储 1 或 - 1 并转到下一个字符?您还可以看到 ^ 我必须将它存储在一个变量中,而我应该忽略它但没有如何忽略它?
提前致谢
int main()
{
int in;
int power;
char x;
char f;
fstream fin;
fin.open("input1.txt");
list l1,l2;
while(fin.peek() != 61)
{
fin>>in;
fin>>x;
fin>>f;
fin>>power;
cout<<in<<endl<<x<<endl<<f<<endl<<power<<endl;
l1.addtoend(in,power,x);
cout<<endl;
}
fin.ignore(2,'\n');
while(fin.peek() != 61)
{
fin>>in;
fin>>x;
fin>>f;
fin>>power;
cout<<in<<endl<<x<<endl<<f<<endl<<power<<endl;
l2.addtoend(in,power,x);
cout<<endl;
}
l1.display();
l2.display();
}
【问题讨论】:
-
将整行作为字符串读入并解析字符串,将其分解为各个组件。不应该这样做。
-
@PaulMcKenzle 我知道这样,但需要很多条件才能获得正确的输入。
-
我知道这种方式 -- 那就是这样做的方式。 -- 但它需要很多条件才能获得正确的输入 -- 哈哈。这正是你最终要做的——这就是任务的本质。标记化,使用正则表达式,解析等。这就是这一切的工作原理。您期望输入例程来解析您的字符串——同样,它几乎从未以这种方式完成。