C++ 我想在写完东西后在控制台中有第一行。。我怎样才能得到它?

C++ 我想在写完东西后在控制台中有第一行。。我怎样才能得到它?,c++,C++,在编程过程中,我只想在console中的第一行显示,例如: 第一步:(在控制台结果中) 确切地说,我想要的是在第一步之后,我不能回到第一排 我只想写“b”,但我知道我不能回到第一行 那我该怎么办呢?以后不能修改控制台行。为了给人留下这样的印象,您可以清除控制台,然后重写整个输出。如果您的终端支持,您可以使用。 例如,您可以尝试以下代码: int main() { for (int i = 0; i < 5; i++) { cout << 'a' <

在编程过程中,我只想在console中的第一行显示,例如:

第一步:(在控制台结果中)

确切地说,我想要的是在第一步之后,我不能回到第一排 我只想写“b”,但我知道我不能回到第一行


那我该怎么办呢?

以后不能修改控制台行。为了给人留下这样的印象,您可以清除控制台,然后重写整个输出。

如果您的终端支持,您可以使用。 例如,您可以尝试以下代码:

int main() {
    for (int i = 0; i < 5; i++) {
        cout << 'a' << endl;
    }

    cout << '\033' << "[5A"; // move the cursor 5 cells up
    cout << '\033' << "[1C"; // 1 cells forward
    for (int i = 0; i < 5; i++) {
        cout << 'b';
        cout << '\033' << "[1D"; // 1 cells down
        cout << '\033' << "[1B"; // 1 cells back
    }
    return 0;
}
intmain(){
对于(int i=0;i<5;i++){

为什么不简单地
答案是否需要可移植?因为这不是我的意图…也许我会找到另一种方法来解决这个问题谢谢^^
cout
不是控制台。它是一个标准输出,严格地说是线性的。你可以在各种终端实现上获得所需的输出,但这取决于操作系统(和终端实现)。您的环境是什么?如果控制台输出是行打印机,但大多数现代控制台都提供了一种写入屏幕任何一行的方式,则为True。@CharlesBailey ok--但例如bashes echo或println(c/java等)怎么可能呢修改写入位置?如果您现在选择了确切的终端,您可以打印转义序列(例如,对于像我这样的vt320,在bash中通过
printf'\033[H'
)或者您可以使用一个库,它从ncurses中提取特定类型的终端,例如
tput
,因此在bash中,您可以编写
tput home
,并将光标位置移动到home位置。好的,但一般来说,您不能这样做……对我来说,它是一个流。如果指定控制台是VT100兼容terminal.yip但一般来说它不会工作..我也可以说
ab

ab

ab

ab

ab
int main() {
    for (int i = 0; i < 5; i++) {
        cout << 'a' << endl;
    }

    cout << '\033' << "[5A"; // move the cursor 5 cells up
    cout << '\033' << "[1C"; // 1 cells forward
    for (int i = 0; i < 5; i++) {
        cout << 'b';
        cout << '\033' << "[1D"; // 1 cells down
        cout << '\033' << "[1B"; // 1 cells back
    }
    return 0;
}