在c ++中添加两个单个字符

时间:2014-10-29 16:22:02

标签: c++ char int add

我正在尝试用c ++制作自动售货机。我只是想为它添加一些验证,所以它不会破坏。我首先要求用户输入他们选择的前两个字母。我知道我不能阻止他们输入超过一个字符。我创建了一个do while循环来确保第一个char和第二个字符不比maxChar大。我没有语法错误,但我没有得到正确的答案。我知道char不同于int,但我如何将char转换为int?任何帮助将不胜感激

#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
#include <set>
#include <cctype>
#include <locale>


const int maxChr = 3;
char chrOne,chrTwo; 
   do
    { 
        cin >>chrOne>>chrTwo;
        if(chrOne + chrTwo > maxChr)
        {
            cout <<"you have too many characters"
            "please try again" << endl;
        } 
        while (chrOne + chrTwo > maxChr);  

    }

4 个答案:

答案 0 :(得分:1)

do...while循环如下:

do
{

} while ();

(你的时间在结尾括号之前)

如果您只想获得两个字符(假设您只需要0-9,因为您要求提供相关数字):

#include <iostream>

int main()
{

  char in1,in2;
  do {
      std::cout << "please make a selection"
      cin.get(in1); 
      cin.get(in2);
      in1 -= '0'; //converts a char to the digit that represents it - needs checking though
      in2 -= '0';
      //at this point, you have grabbed both the inputs from the cmdline.
      //you'll need to ensure that these are valid.
  } while (!(in1 >= 0 && in1 <= 9 && in2 >= 0 && in2 <= 9)); //change as needed e.g. if you have a 5*6 machine, reduce the '9's to 5 and 6

  //you now have your input.
}

答案 1 :(得分:0)

if(chrOne + chrTwo > maxChr)没有检查用户是否输入了两个以上的字符,所以根据我的理解,你说这是错误的。如果你只想要一个字符,你可以在字符串中输入用户并对其进行检查,以查看用户输入的字符数。

答案 2 :(得分:0)

您正在使用

cin >>chrOne>>chrTwo;

让我们说用户已输入两个以上的字符,即荒谬的问题。

即便如此,只有前两个字符会存储在您的变量上,即

chrOne='a'
chrTwo='b'

请澄清你打算做什么......

答案 3 :(得分:0)

好的,我明白你要做的是什么,但你这样做的方式很糟糕......你总是只读前两个字符!


此行chrOne + chrTwo不是您期望的那样。 ASCII中的A与65相同,B = 66,依此类推。所以实际上你总结了两个数字。 65 + 66 = 131,大于3;


我不知道StackOverflow上的格式是否错误,while(...)应该在}之后。这段代码不应该编译。