私は前にプログラミングしている間にかなり混乱しましたが、これはケーキを取ります。基本的に私は1つのループの値を設定し、次の繰り返しでは次のループの値に変更します。変数値の変更自体
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < numWords[i]; ++j) //numWords [0] = 9, numWords [1] = 7
{
stb[i][j].word = const_cast<char*>(is (j + 1,1).c_str()); //is(int,length[opt]) converts int to string, c_str() returns const char *, but I need char *
cout << is(j+1,1) << ' ' << stb[i][j].word << '\n';
}
}
for (int i = 0; i < 2; ++i)
{
for (int j = 0; j < numWords [i]; ++j)
{
cout << stb[i][j].word << ' ';
}
cout << '\n';
}
出力:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 1 2 2 3 3 4 4 5 5 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
私の唯一の推測では、今のconstで何かですが、それは以前のすべての配列要素を変更し続けるだろう、なぜそれは意味がありません...
あなたはまだ 'is()'を表示していません。 –
さて、私は実際に理由を見つけました。まず最初に、is()は正常に動作しますが、文字列は連続するメモリ位置に各文字を格納する必要がないので、cstr()に渡す文字列が変更されるとすぐにchar *それから。私はこれにどれくらいの時間を費やしていますか?/ – chris
'const_cast'を使わないでください。これまで(あなたがC++で十分な経験があれば、いつ安全になるのか知ることができます) –