【问题标题】:Getting multiple string input after integer?在整数之后获取多个字符串输入?
【发布时间】:2019-12-08 19:07:10
【问题描述】:

我遇到了这个编程问题,我需要在输入整数后输入多个字符串。 该字符串还包括空格。

//程序

#include <iostream>
#include<string.h>
using namespace std;

int main() {
int t;
cin>>t;
while(t--){
    string s;
    getline(cin,s,'\n');  //also used cin>>s;
    cout<<"$"<<s<<"$"<<'\n';
}
return 0;
}

输入

2
Hello World
Hello StackOverFlow

预期输出

Hello World
Hello StackOverFlow

程序的输出

$$$Hello World$

【问题讨论】:

    标签: c++ string c++11 std getline


    【解决方案1】:

    这里的问题是std::cin &gt;&gt; t; 不使用输入中出现的\n。这就是为什么对std::getline 的第一次调用会读取所有内容,直到下一个\n 立即出现(这样s 在第一次迭代期间是空字符串)。

    您可以通过两种方式解决此问题。不碰代码,调整输入为

    2 Hello World
    Hello StackOverFlow
    

    但我想这不是本意。另一种方法是告诉std::cin 在下一个换行符之前忽略所有内容,例如

    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    

    在遇到下一个\n 之前,它可能会吃掉大量字符。要编译上述内容,您需要#include &lt;limits&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多