如何在C ++中将字符转换为整数?

时间:2011-10-14 08:26:54

标签: c++

如何在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吗?

6 个答案:

答案 0 :(得分:4)

你可以试试这样的东西,在那里你拿一根绳子。检查它是否是你的“输入结束”字符串,然后将字符串转换为int,如果不是。

但它仍然缺少一堆错误检查。

while(true) {
  std::string s
  cin >> s;
  if (s == "*" ) break;
  std::stringstrem ss(s);
  ss>>x;
}

答案 1 :(得分:0)

您可以使用strtol将字符串转换为整数:

http://linux.die.net/man/3/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之间的单个数字整数。