每當我使用cin
輸入一個變量時,在一次命中輸入後它會自動進入一個新行。我很好奇,如果有一種方法可以使用cin
而不需要換一個新行。我想在命令提示符的同一行輸入cin
和cout
多個事物。這可能嗎?如何在不創建新行的情況下使用cin輸入變量?
回答
您不能使用cin
或任何其他標準輸入。但是,獲得你想要的效果當然是可能的。我看到您使用Visual Studio在Windows上,因此您可以使用例如_getch。這是一個讀取直到下一個空格並將結果存儲在字符串中的示例。
#include <conio.h> // for _getch
std::string get_word()
{
std::string word;
char c = _getch();
while (!std::isspace(c))
{
word.push_back(c);
std::cout << c;
c = _getch();
}
std::cout << c;
return word;
}
這不是很好。例如,它不能很好地處理非打印字符輸入。但它應該讓你知道你需要做什麼。您可能也對Windows API keyboard functions感興趣。
這是不可能的。引用@Bo Persson,它不是由C++控制的,而是控制檯窗口。
我不認爲你想要做的事情可以用cin來實現。你可以做的是把你所有的輸入寫入一行,並用你選擇的分隔符來解析輸入字符串。
正如其他人已經指出,你不能這樣做與cin
,但你可以做到這一點getchar()
。你必須做的是:
- 收集單獨使用
getchar()
(添加每到一個string
結束,因爲它被讀入,例如),然後 - 讀取每個字符後的每個字符,決定何時您已達到一個變量值的末尾(例如,通過檢測輸入中的一個或多個
' '
字符,如果您正在讀取的值爲int
或double
值),則 - 如果您已達到文本的末尾一個變量,將已經構建的字符串轉換爲相應類型的變量(例如
int
,double
,等等),然後 - 輸出任何內容到可能需要的線路,然後
- 繼續,你在讀下一個變量。穩健
處理錯誤會因爲我沒有爲此編寫任何代碼,但你可以看到你可以使用的方法。
更正:當我看到@Benjamin Lindley的回答時,我試着寫了一些快速代碼,用'getchar()'來做到這一點,正如我的建議,並發現我不能。無論我做了什麼(例如,刷新輸出等),直到我在輸入行上按下「Enter」後,輸出才能寫入,因此我無法在同一行中插入輸入和輸出。 – Simon 2013-03-04 21:08:09
你也可以用空間的輸入,而不是進入 是這樣的:
cin >> a >> b >> c;
,並輸入您鍵入
10 20 30
然後
a=10
b=20
c=30
只使用gotoxy聲明。您可以按'enter'並在例如 的同一行輸入值。在輸入3 * 3矩陣:
'#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
int a[20][20],x,y;
cout<<"Enter the matrix:\n ";
for(int r=2;r<7;r+=2)
for(int c=2;c<7;c+=2)
{gotoxy(c,r);
cin>>a[r][c];
}
getch();}'
'int main'! :神請說,請不要在現實世界中編寫這樣的代碼。 – Xupicor 2016-12-04 06:23:13
我不能評論,但如果你留下整數之間的空格,那麼你可以得到想要的效果。這也適用於cin
。
int a, b, c;
cin>>a; cin>>b; cin>>c;
如果您輸入的值爲10 20 30
那麼它們將分別存儲在a,b和c中。
- 1. 如何在不創建新變量的情況下引用現有變量?
- 2. 如何在不創建實例變量的情況下使變量可用
- 3. 如何在不使用變量的情況下輸出Console.ReadLine()的輸入
- 4. 如何在不用C++創建數組的情況下創建變量名?
- 5. 如何在不用Python創建數組的情況下創建變量名?
- 6. 如何在不使用變量值的情況下創建類實例?
- 7. 在不創建Python實例的情況下引用類變量
- 8. 在這種情況下,如何在數組中輸入變量?
- 9. 如何在不創建新對象的情況下引用substr?
- 10. 如何在不創建新PDF的情況下更新PDF?
- 11. 在Perl中,如何在不使用中間變量的情況下創建子例程輸出的引用?
- 12. 如何在不改變變量的情況下進行遞歸
- 13. 如何在不調用方法的情況下使用變量
- 14. 如何在不運行變量的情況下導入等於輸入的變量?
- 15. 如何在不輸出新行的情況下在Python中查詢輸入
- 16. 如何在不使用Membership.CreateUser()的情況下創建用戶?
- 17. 如何在不創建漏洞的情況下禁用rails表單輸入。
- 18. 如何在不使用變量的情況下編程scala DSL?
- 19. 在不使用ServletContext的情況下創建一個新文件
- 20. 如何在不使用Shadow DOM的情況下創建組件?
- 21. 如何在不使用文件的情況下創建鬍鬚?
- 22. 如何在不使用String的情況下創建JSON對象?
- 23. 如何在不使用事務的情況下創建死鎖?
- 24. 如何在不使用`-`或`--`的情況下創建參數?
- 25. 如何在不使用JFreeChart的情況下創建圖形?
- 26. 如何在不使用xcode的情況下創建.xcappdata?
- 27. 在保留smarty變量的情況下轉義用戶輸入
- 28. 如何在不使用Python輸入的情況下檢查用戶輸入
- 29. 如何使Automapper在不創建新對象的情況下使用精確值
- 30. 如何在不允許插入的情況下創建MySQL表
@andre當你按回車它應該保持在同一行。 – 2013-03-04 19:28:05
不是。這不是語言。這是控制檯窗口的工作原理。 – 2013-03-04 19:31:08
好的,謝謝。 – 2013-03-04 19:32:02