2011-11-19 102 views
0

我有一個std::string字段notes的對象,允許最多100個字符。我需要編寫一個C++控制檯界面(使用IOStream)讓用戶輸入這些註釋。所有角色都是允許的,當然包括空格。C++控制檯自由文本輸入(最大字符大小)

做這種事情的最好方法是什麼?

有沒有辦法讓用戶知道剩下多少個字符?

編輯:另外空字符串應該被允許

+0

對於實時性強,鍵盤控制,則需要控制終端。這是平臺特定的,但請查看'ncurses' /'pdcurses'庫。 –

回答

1

使用std::stringstd::getline

可以顯示百個星號是這樣的:

cout << " " << string(100, '*') << endl; 
cout << "> "; getline(cin, line); 

然後,用一個足夠寬的控制檯窗口中,用戶可以看到的空間有多大仍然存在。

乾杯&心連心,

0

我不知道是std::string可以在其能力受到強烈有限(max_size成員函數提供了一個巨大的數字)。如果你真的想限制爲100個字符(這不是一件好事),使用char buf[100];(或者可能是std::array)可能更有意義(但不要忘記有一個終止的空字符)。

而要輸入該字段,您可能需要使用輸入流的getline成員函數。

如果您在Linux上編寫控制檯應用程序,那麼ncurses庫對您可能會有用。或者也許readline

+0

那麼,對象會檢查字符串的長度,如果超過,會拋出異常。我真的不想限制爲100個字符,但這是規格... – Pincopallino