編程之前,我一直很困惑,但是這個需要蛋糕。基本上,我將該值設置爲一個for循環,並在接下來的迭代中更改爲下一個循環的值。變量本身的變化
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()的字符串發生更改,從中。去圖我花了多少時間:/ – chris
不要使用'const_cast'。永遠。 (當你有足夠的C++經驗知道它什麼時候會安全的時候,你會學到更好的技術。) –