如何在C ++中将字符转换为整数?
我想从用户输入整数,并在用户输入*后立即停止输入。 我使用以下代码:
while(true) {
cin >> x;
if (x == (int) '*')
break;
}
我明确地将*转换为int。但这似乎不起作用。
我也试过
while(true) {
cin >> x;
if (x == (int) '*' - '0')
break;
}
但它没有多大帮助。我还能做什么? x确实是一个整数。 但我想从用户输入一个整数。只有当用户输入*我想要退出循环。 我应该将x声明为char然后将其转换为int并使用它吗? 我可以将char转换为int吗?
答案 0 :(得分:4)
你可以试试这样的东西,在那里你拿一根绳子。检查它是否是你的“输入结束”字符串,然后将字符串转换为int,如果不是。
但它仍然缺少一堆错误检查。
while(true) {
std::string s
cin >> s;
if (s == "*" ) break;
std::stringstrem ss(s);
ss>>x;
}
答案 1 :(得分:0)
您可以使用strtol
将字符串转换为整数:
答案 2 :(得分:0)
由于您已使用std
,因此应阅读字符串并使用std::string
进行比较。
看看吧。
我不会给你一个完整的解决方案,因为我认为你最好自己调查一下,现在你知道在哪里看。
答案 3 :(得分:0)
我怀疑您已将x
定义为int
;尝试将其定义为char
:
char x;
while (true)
{
cin >> x;
if (x == '*')
break;
...
}
答案 4 :(得分:0)
我认为您可以使用atoi()将char转换为int。
答案 5 :(得分:-1)
我很确定你无法将一个字符捕获到一个整数中。相反,捕获一个char,检查*,然后伪转换为整数。
char c;
while(true) {
cin >> c;
if (c == '*')
break;
int x = c - '0';
if(x >= 0 && x <= 9){
//do something with integer x
}
}
但是,这只会处理0到9之间的单个数字整数。