私は、整数入力を対応する英語版に置き換える 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 に含まれているというのは、おそらく欺瞞的です。これは、このコードが何度も書き直されているためです。