cout在for循环中切断字符串的开头

时间:2018-07-06 14:29:32

标签: c++

我有一个用于对象类的二维数组的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");
        }

    }
}

2 个答案:

答案 0 :(得分:9)

您正在将数字添加到字符串文字(代表错误),最终归结为指针运算。
它不会像其他某些语言那样“数字化”数字并将其连接起来。

"Hello" + 1 —> "ello"
"Hello" + 2 —> "llo"

以此类推。

使用<<代替+

答案 1 :(得分:0)

您可以用cout<<中的数字分开,而不是使用算术运算符+来添加偏移量。