输入一个整数然后是一个带空格的字符串c ++

时间:2017-01-24 23:45:04

标签: c++

我怎么能用一个整数然后一个字符串"用空格" 这是我的代码

int x;string s;
    cout<<"Enter Integer"<<endl;
    cin>>x;
    cout<<"Enter the string with spaces"<<endl;
    //if i used cin>>s here then it will not read all the text because it has spaces 
    // is i used getline(cin,s); then it will not read any thing  

2 个答案:

答案 0 :(得分:0)

您可能遇到的问题是cin >> x只读取 您键入的数字的数字,而不是以下换行符。然后,当您执行cin >> s读取字符串时,输入处理器将看到换行符并仅返回空字符串。

解决方案是使用一个旨在读取整行输入的函数,例如std::getline。不要使用提取运算符>>进行交互式输入。

答案 1 :(得分:0)

读取带空格use std::getline的字符串。

但是!

注意>>碰到分隔符时会发生什么。它停止并离开流中的分隔符。只要您使用>>,因为>>将丢弃所有空格,这不是问题。 std::getline将捕获该空白,并且常见的用例是

user types in number and hits enter
user types in string and hits enter

那会发生什么? >>提取数字并在它到达空格时停止。这样就可以通过按流中的Enter键将行尾放入流中。 std::getline出现了,它看到的第一件事是......行尾。 std::getline存储一个空字符串并立即返回。现在程序处理一个空字符串,用户仍然希望键入一个字符串,输入一个将来读取的字符串,可能会将输入流放入错误的情况下,当然会给用户一个惊喜。

一个常见的解决方案是to use ignore(numeric_limits<streamsize>::max(), '\n');,在提示用户输入并调用std::getline之前,使用流中直到并包括行尾的所有数据。