在 getline 之后在 C++ 中输入

Posted

技术标签:

【中文标题】在 getline 之后在 C++ 中输入【英文标题】:taking input in c++ after getline 【发布时间】:2017-11-11 21:00:59 【问题描述】:

在使用getline 后,我在使用 C++ 进行输入时遇到了一些问题。以下是一段代码:

    cin>>n;

    vector<string>v(n);
    string s, type;
    bool reversed;

    getline(cin, s);

    for(int i=0;i<n;i++) 
        getline(cin, s);
        v[i]=s;
    

    cin>>key;
    cin>>reversed;
    cin>>type;

对于以下输入--

3
92 022
82 12
77 13
2 true digital

我需要的是以下几行作为带空格的字符串--

92 022
82 12
77 13

我可以,但是 reversed 的值始终为 0,并且 type 始终为空白。请帮助我在接受输入时做错了什么?

我还必须在 for 循环之前使用一次getline 才能正确输入“n”字符串。如何避免?

【问题讨论】:

【参考方案1】:

除非您设置boolalpha 标志,否则cin &gt;&gt; bool 需要01

要使用文字"true" / "false",请像这样设置boolapha

  cin >> boolalpha >> reversed;

【讨论】:

以上是关于在 getline 之后在 C++ 中输入的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 getline 的情况下在 C++ 中将输入字符串直到行尾

在getline之后在C ++中浏览一行内的单词

C++的面向行的输入:getline()与get()

C++的面向行的输入:getline()与get()

C++ getline() 不结束输入

C++基础:各种输入方法总结,cincin.get()cin.getline()getline()gets()getchar()