我正處於使用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