2017-07-16 46 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。