【问题标题】:entering space separated inputs in a character array in c++ [duplicate]在c ++中的字符数组中输入空格分隔的输入[重复]
【发布时间】:2021-03-23 14:35:40
【问题描述】:

据我在输入时已阅读 cin "ignores" 空格制表符和换行符,但是当我尝试在字符数组中输入我的姓名时,为什么它只存储我姓名的第一部分?

//I input John Ive

char a[100];
cin>>a;
cout<<a;
//I get John as output

【问题讨论】:

  • 跳过前导空格,停在第一个空格...
  • 本题与std::cin无关。 流提取器 (operator&lt;&lt;) 将空格视为分隔符。其他形式的读取(例如std::getline)会很乐意将空格从std::cin(和任何其他istream)复制到目标数组中。

标签: c++ arrays string char


【解决方案1】:

因为 蒸汽提取器 (operator&gt;&gt;) 在该空间停止读取,您必须调用它两次。 (感谢@PeteBecker)。

或者,如果你想阅读整行,你应该使用getline()

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

int main()
{
    cout << "Enter name:\n";

    string s;
    getline(cin,s);

    cout << "You entered " << s << '\n';
}

【讨论】:

  • std::cin 不会在空间停止阅读。 蒸汽提取器 (operator&gt;&gt;) 可以做到这一点。
  • @PeteBecker 是的,你是对的......我只是用简单的术语写了,我过于简单化了。对不起,我会更新答案。感谢您的评论。
  • 这是一种常见的过度简化,不幸的是,它会导致大量混乱。 std::cin 是一个对象。它自己不做任何事情。它是做事的函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多