0

该练习要求提供一个代码,该代码可以将用户输入的数字 0-9 作为整数或字符串分别转换为字符串或整数,即如果0输入"zero"将被输出,反之亦然。

string number;

cout << "Let's convert strings to numbers."
     << "Enter value/string of 0-9";

while (number!= "exit")
{
    cin >> number;

    for (int i=0; i < digits.size(); i++) 
    {
        if (number == digits[i]) cout << i << endl;
    }   


    if (number == "0")      cout << digits[0] << endl;
    else if (number == "1") cout << digits[1] << endl;
    else if (number == "2") cout << digits[2] << endl;
    else if (number == "3") cout << digits[3] << endl;
    else if (number == "4") cout << digits[4] << endl;  
    else if (number == "5") cout << digits[5] << endl;  
    else if (number == "6") cout << digits[6] << endl;  
    else if (number == "7") cout << digits[7] << endl;
    else if (number == "8") cout << digits[8] << endl;  
    else if (number == "9") cout << digits[9] << endl;  
}

digits 是一个向量类,用于存储字符串"zero""one"

这段代码工作正常,但我不喜欢长长的语句链,if/else if但我想不出一种将整数转换为字符串的方法。有人可以帮我提高效率吗?谢谢!

4

3 回答 3

3

你可以使用那个,if number == "0"number[0] == '0'就是char.

ei 而不是 if/else 语句:

if (number[0] >= '0' && number[0] <= '9' )
  std::cout << digits[number[0] - '0'] << std::endl;
else
  std::cout << "wrong input - needs to be digit" << std::endl;

string基本上是一个字符数组,std::string是一个类型的字符数组char。例如,这是在 c 或 c++ 中声明和初始化字符串的两种合法方式

char s[3] = { '0', '1', '\0' }; 
char s[3] = "01";

Char 值在技术上是整数(或者更确切地说是字节),它以某种编码(通常是 ASCII)存储字符代码。比如'0'的字符码是48'1'的字符码是49'2'50。我们使用它,因为我们知道

'3' - '0' = 51 - 48 = 3
于 2012-10-07T10:42:50.957 回答
1

你可以digits[number[0] - 48]摆脱 if/else if。

于 2012-10-07T10:38:31.643 回答
0

只需使用 isdigit 检查它是否为 0-9 http://www.cplusplus.com/reference/clibrary/cctype/isdigit/

如果它是一个数字,您可以使用aoti http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/将其转换为int

最后只是说

cout << digits[aoti(number)];
于 2012-10-07T20:02:14.373 回答