我有一个用于对象类的二维数组的double for循环,并且每次循环以提供特定信息时都应该有重复的消息,但是每次都相同的字符串会不断被剪切每次循环时都在前部关闭。它继续这样做的原因是什么?在使用C ++之前,我从未遇到过这个问题。
System systems[29][119];
string ds[29][119];
int sx = 0;
int sy = 0;
for (int i = 0; i < 29; i++) {
for (int o = 0; o < 119; o++) {
int which = rand() % 4 + 1;
system("cls");
cout << "X: " + o << endl << "Y: " + i << endl << endl;
if (which == 1) {
systems[i][o] = genSystem(o, i);
cout << "ID: " + systems[i][o].id << endl
<< "Num Planets: " + systems[i][o].numPlanets << endl;
system("pause >nul");
}
else {
systems[i][o] = genSystem(o, i, false);
cout << "NO SYSTEM" << endl;
system("pause >nul");
}
}
}
答案 0 :(得分:9)
您正在将数字添加到字符串文字(代表错误),最终归结为指针运算。
它不会像其他某些语言那样“数字化”数字并将其连接起来。
"Hello" + 1 —> "ello"
"Hello" + 2 —> "llo"
以此类推。
使用<<
代替+
。
答案 1 :(得分:0)
您可以用cout
将<<
中的数字分开,而不是使用算术运算符+
来添加偏移量。