2017-07-16 50 views
2

我正在写一个多行系统,就像这样:C++回去线

string readLines(string x) 
{ 
    string temp = "a"; 
    vector<string> lines(0); 
    string result; 

    while (1) 
    { 
     cout << x; 
     getline(cin, temp) 

     if(temp != "") 
     { 
      result = result + "\n" + temp; 
      lines.push_back(temp); 
     } 
     else 
      break; 
    } 
    return result; 
} 

工作正常,但我希望能够编辑前行,例如,我打字的东西像这样:

Helo, 
World 

我想回到helo并修复我的错字。我怎样才能做到这一点?

+4

您希望与终端进行特定于平台的交互。 (AKA,Windows不同于Linux不同于.....)。 'ncurses'是一个流行的库,它将平台特定的位抽象出来。 – druckermanly

+2

这不是输入流功能的性质。 –

+0

@druckermanly,我在Windows上工作 –

回答

1

在C++中没有可移植的方式返回一行。

您可以通过打印\r转到行的开头,但移动到上一行需要平台相关的代码。

如果不想使用库如Curses,您可以尝试ANSI escape codes。取决于终端,cout << "\033[F"将光标向上移动一行。

在Windows上,还有SetConsoleCursorPosition API。