对cin感到好奇

时间:2019-07-18 16:49:59

标签: c++ string cin

我对编程非常陌生,并尝试学习尽可能多的东西。我对cin char到底能做什么感到很好奇。当我输入一个单词时,唯一输出的是单词的第一个字母。这应该发生吗?

#include <iostream>

using namespace std;

int main()
{
char ch;
cin >> ch;
cout << "Thank you for entering " << ch << endl; 
return 0;
}

我想输出整个单词或短语,但这似乎没有发生。谢谢!

4 个答案:

答案 0 :(得分:5)

char是一个字符。当那是您阅读的目的地时,您将获得一个字符。

如果您想读取多个 个字符(一个字符串),请读入std::string而不是char

要阅读多个单词(由于std::cin将停在空白处),请查看std::getline

答案 1 :(得分:1)

问题:

是的,这应该发生。 C ++中的char是只能存储字符的一种变量。因此,cin将仅从输入流中获取第一个字母。如果要输出单词,请使用字符串变量。

有关C ++变量类型的更多信息:http://www.cplusplus.com/doc/tutorial/variables/

答案 2 :(得分:1)

那是因为您使用char类型。 Char表示输入字符串的1个字符。只需使用string类型(包含在“字符串” 模块中)。

PS:预测下一个问题–下次可以使用cin.getLine()函数读取整个输入字符串。因为cin函数会读取整个符号,直到whitespace字符为止(如空格EOL(行尾))

答案 3 :(得分:1)

  

我想输出整个单词或短语,但是那不是   似乎正在发生

要输出整个单词或短语,您必须为单词或短语保留内存。

声明中类型为char的对象

char ch;

只能存储一个字符。

改为使用标准C ++类std::string的对象。 该程序可以通过以下方式查看

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s;

    getline( cin, s );

    cout << "Thank you for entering " << s << endl; 

    return 0;
}

或者没有使用指令(建议)

#include <iostream>
#include <string>

int main()
{
    std::string s;

    std::getline( std::cin, s );

    std::cout << "Thank you for entering " << s << std::endl; 

    return 0;
}