编程之前,我一直很困惑,但是这个需要蛋糕。基本上,我将该值设置为一个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++经验知道它什么时候会安全的时候,你会学到更好的技术。) –