std :: cin是如何工作的?

时间:2016-02-05 20:34:07

标签: c++

我通过执行以下操作获得了一个int:

int num;
cin >> num;

我通过执行以下操作获得字符串:

string word;
cin >> word;

我的问题是:cin如何在内部进行转换?如果我输入意外的东西,它会输出错误吗?例如:“ɔoolʇǝxʇʇuǝɹɐʇoɹoulıuǝ”。 cin使用的保护措施是什么?

我是C ++的新手

3 个答案:

答案 0 :(得分:2)

请注意>>是运营商。 C ++提供了定义为任何内置运算符提供功能的函数的功能。 (注意,您无法创建该语言中不存在的新运算符。)在这种特殊情况下,>>运算符已经过载以与cin和{{1}一起使用或int。然后这些功能执行转换。对于string版本,如果输入无法转换为int,则会在cin中设置错误标记。

答案 1 :(得分:1)

std::cinstdin读取。

此:

string word;
cin >> word;

将返回string,而不是char*。尝试在C ++中避免使用char数组。

了解std::cin here。在处理C ++ IO时,了解stringstreams非常有用。

答案 2 :(得分:1)

您可能想阅读一本关于C ++ iostream的书。 Like the C++ book by Stroustrup who invented C++.

但总的来说,像cin这样的iostream对象具有goodbit,badbit,failbit和eofbit。 Look at iostate.

cin对象在返回false时会返回false。所以你可以读这样的整数:

int my_int;
while(cin >> my_int) {
    cout << "Received " << my_int << "\n";
}

当循环读取任何不是数字或到达文件末尾的内容时,循环将退出。