【问题标题】:c++ read actual input linec++读取实际输入行
【发布时间】:2017-05-25 23:38:37
【问题描述】:

我正在尝试从输入中获取字符串行。例如“这很棒”。在所有情况下,我要么得到要么“这”要么“很棒”。 getline() 方法没有按预期工作。代码尝试:

string val;

while (true) {
    cout << message;
    getline(cin, val);
    if (val.length() <= length)
    {
        break;
    }
}

我的目标是获取所有句子。这可能吗?

【问题讨论】:

  • getlinecin &gt;&gt; 不能很好地混合,因为它们处理换行符的方式不同。有很多关于它的 SO 问题,我不确定推荐哪个,但例如 herehere
  • 谢谢,但链接中的解决方案不起作用。有趣的是,我正在为一些如此基本的东西浪费时间,以至于不能正常工作。目前还没有解决方案...
  • 首先你用getline(cin, val);读取一行,然后用cin &gt;&gt; val覆盖val
  • 这是建议,还是?
  • 请提供complete 示例以便我们重现

标签: c++ input


【解决方案1】:

添加cin.clear(); cin.sync();解决问题

string val;

while (true) {
    cin.clear();
    cin.sync();
    cout << message;
    getline(cin, val);
    if (val.length() <= length)
    {
        break;
    }
}

【讨论】:

  • 这更像是把你的问题扫到地毯下而不是解决它,但不管你的船是什么。
  • 好吧,我已经描述了我的目标是什么。您没有提供任何解决方案。
  • 解决方案到底是什么?请在您的问题中提供minimal reproducible example(这是题外话,将在没有问题的情况下关闭)。没有人可能知道您的程序片段在上下文之外做了什么。如果我猜对了,您在循环之前正在执行cin &gt;&gt; something,在这种情况下,您在 cmets 中不止一次提到了一个解决方案。只需阅读它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多