在学习C++过程中写了如下一串代码,调试过程中只有输入英文字母才会结束程序(跳出循环),按照我的理解只要输入的参数n不是string::size _ type就能跳出while循环了啊。
#include
using namespace std;
int main() {
const string hexdigits = "0123456789ABCDEFF";
cout << "please enter a series of number between 0 and 15\n"
<< "Separated by spaces. Hit Enter when finished: "
<< endl;
string result;
string::size_type n;
while (cin >> n)
if (n < hexdigits.size())
result += hexdigits[n];
cout << "your hex number is " << result << endl;
return 0;
}
你的理解基本是对的,除了英文字母外,输入#、¥、%、^等 非数字字符 也会结束循环。
string::size_type是STL库模板类string的一个成员变量,这部分内容要深入学习可能耗时太多。
简单的讲,它相当于int类型,区别在于它的大小范围要比int类型大得多。
可以参考:
https://msdn.microsoft.com/library/a9c3e0a2-39bf-4c8a-b093-9abe30839591.aspx#basic_string__size_type
如果对您有帮助,请采纳答案好吗,谢谢!
你连 break 都没有 咋跳出循环? 你这个就是个死循环,会一直写到result的后面。
cin>>n 当循环条件的话,返回值是一个cin对象,即返回一个输入流, 输入流的结束,可以是报错和EOF:
报错可以用非法的输入,类型不匹配,a,b,c,d,输入大小超过最大值,
键盘模拟EOF windows 用ctrl+c 模拟,linux 可以用 ctrl+d,这样都可以结束本次循环。
string::size_type
就是string类内部定义的一个类型别名,就typedef出来的一个类型,用来表示字符串长度的非负整形。
具体是什么类型不重要......