我通过执行以下操作获得了一个int:
int num;
cin >> num;
我通过执行以下操作获得字符串:
string word;
cin >> word;
我的问题是:cin
如何在内部进行转换?如果我输入意外的东西,它会输出错误吗?例如:“ɔoolʇǝxʇʇuǝɹɐʇoɹoulıuǝ”。 cin使用的保护措施是什么?
我是C ++的新手
答案 0 :(得分:2)
请注意>>
是运营商。 C ++提供了定义为任何内置运算符提供功能的函数的功能。 (注意,您无法创建该语言中不存在的新运算符。)在这种特殊情况下,>>
运算符已经过载以与cin
和{{1}一起使用或int
。然后这些功能执行转换。对于string
版本,如果输入无法转换为int
,则会在cin
中设置错误标记。
答案 1 :(得分:1)
std::cin
从stdin
读取。
此:
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";
}
当循环读取任何不是数字或到达文件末尾的内容时,循环将退出。