gpt4 book ai didi

c++ - 反向单词问题 - 程序卡在输入循环中?

转载 作者:行者123 更新时间:2023-11-30 04:34:35 24 4
gpt4 key购买 nike

我正在尝试解决反向单词问题。我的解决方案有效,甚至可以跳过空行。然而,在读取文件的所有行之后,程序陷入循环,不断接受输入。这非常令人费解,我觉得它与我的外部 while 循环有关,但我看不出它有什么问题。

#include <iostream>
#include <fstream>
#include <string>
#include <stack>

using namespace std;

int main(int argc, char** argv)
{
stack<string> s;
ifstream in;
in.open(argv[1]);
do
{
do
{
string t;
in >> t;
s.push(t);
} while(in.peek() != '\n');
do
{
cout << s.top();
s.pop();
if(s.size() > 0) cout << " ";
else cout << endl;
} while(s.size() > 0);
} while(in.peek() != -1 || in.fail() || in.eof() || in.bad() );
in.close();
return 0;
}

最佳答案

问题出在内部循环。如果我在一行中给出一个只包含一个单词的文本文件,它将失败,因为它永远不会从内部循环中出来。

这段代码对我有用:

int main(int argc, char** argv)
{
stack<string> s;
ifstream in;
in.open(argv[1]);
do
{
do
{
string t;
in >> t;
s.push(t);
} while((in.peek() != '\n') && (in.peek() != -1));
do
{
cout << s.top();
s.pop();
if(s.size() > 0) cout << " ";
else cout << endl;
} while(s.size() > 0);
} while(in.peek() != -1 && !(in.fail()) && !(in.eof()) && !(in.bad()) );
in.close();
return 0;
}

斯里拉姆

关于c++ - 反向单词问题 - 程序卡在输入循环中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5894262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com