如何逐行读取输入然后逐字分开?

时间:2015-12-29 20:29:10

标签: c++

我试图从用户那里接受一个短语并反转单词的顺序并将其打印出来。例如"你好世界"成为世界你好"。

我在这里找到了与我类似的其他问题,其中大部分是" up-voted"答案建议这样做:

std::list<std::string> input;
std::list<std::string>::iterator iter;
std::string phrase;
std::string word;

std::cout << " Enter the phrase you wish to reverse " << std::endl;
std::cout << " >> ";

std::getline(std::cin, phrase);

std::istringstream iss(phrase);

while (iss >> word) {
    input.push_front(word);
}

for (iter = input.begin(); iter != input.end(); ++iter) {
    std::cout << *iter << " ";
}

但是,这对我不起作用。当我运行代码时,它永远不会停止允许输入。我无法弄清楚为什么它不允许我输入输入。

我该怎么做才能输入一个短语并让程序逐字阅读?

编辑:我正在使用MS Visual Studio 2015并使用debug(f5)选项进行编译。

1 个答案:

答案 0 :(得分:1)

事实证明在输入流中有一个迷路的“\ n”,我只是叫

std::cin.get();

摆脱它。

我认为可能是这种情况,但我想不出如何“刷新”输入流,因为没有cin的flush方法。

非常感谢Ankur Jyoti Phukan的帮助!