我正处于用 C++ 编写一个程序的早期阶段,该程序用英文对应物替换整数输入。我不想要关于如何制作这个程序的说明,而是想要了解代码的某个部分如何以某种方式运行,并可能提示如何修复它。
std::string strToEng(std::string s)
{
int sInt = atoi(s.c_str());
std::string digit1[] = {"zero", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen"};
switch(s.size())
{
case 1:
{
int temp = int(s[0]);
return digit1[temp];
}
}
return "error";
}
问题在于 switch 语句中的 digit1 数组。当我编译这段代码时,案例 1 没有返回所需的输出。如果我将 digit1[temp] 更改为某种常量(即 digit1[3]),它会正确显示。使用变量索引数组有问题吗?我该如何解决这个问题?
编辑:也许是欺骗性的,我无法处理高于 9 的数字,但它们仍然包含在 digit1 中。原因是这段代码被重写了好几次。