我正处于使用C++编写程序的早期阶段,它用其英文对应项替换整数输入。我不想要关于如何制作这个程序的说明,而是想知道某个部分代码如何以某种方式行为,并且可能会提示如何解决这个问题。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]),它会正确显示。使用变量来索引数组是否存在问题?我该如何解决这个问题?
编辑:也许欺骗,我没有办法处理数字高于九,但他们仍然包含在digit1。原因是这段代码被重写了好几次。
*“使用变量来索引数组是否存在问题?”主,我希望不会。 – WhozCraig 2013-03-20 20:06:41
问题看起来像它与你的转换'int(s [0])'有关。这对我来说看起来像一个强制转换,它简单地将char字节解释为int,这取决于ascii值。 '1'与1不一样。您将需要使用某种方法将该字符转换为int。 (我看你已经在你的代码中使用atoi) – Porkbutts 2013-03-20 20:09:24
'int temp = int(s [0]);'???打开s.size()?不是很好。 – 2013-03-20 20:09:36