c++ - Stroustrup 第 4 章练习 6 : Improve efficiency

标签 c++ string vector performance

练习要求一个代码,它可以将用户输入的数字 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 是一个 vector 类,它存储字符串 "zero""one" 等。

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

最佳答案

您可以使用 if number == "0" then number[0] == '0' 这是 char

e.i 而不是 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

关于c++ - Stroustrup 第 4 章练习 6 : Improve efficiency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768032/

相关文章:

string - 转义码\"prints both\"。无论如何要在字符串中添加一个“。?

c++ - 在 C++ 中使用字符串末尾的整数值对字符串 vector 进行排序

c++ - 让流的streambuf在流被破坏后仍然存在?

c++ - 无法在 OS X 下编译 CUDA 驱动程序 api 示例

c++ - 除非复制到新字符串,否则比较从 Lua 中的 C 函数推送的字符串失败

python - 如何在具有各种数据类型的列表中搜索字符串,如果它们存在则对它们执行操作?

.net - 字符串不等于字符串?

c++ - 在这种情况下我应该使用指针 vector 吗?

R:如何将表格 reshape 为向量

c++ - 更好的 vector 数据压缩算法?