我的問題是,我想讀取std::cin
的輸入,但不知道輸入的時間。我也必須char
,不能使用std::string
。 我需要處理兩種方法: a)用戶輸入文本,當他點擊[ENTER]時程序停止讀取。 b)用戶將std::cin
重定向到一個文件(如.\a.oput < file
),該文件可以容納多行。如何從std :: cin讀取直到流結束?
編輯:只是注意到std :: cin.eof()在讀取文件的情況下也總是爲false。
對於a)我可以閱讀,直到\ n發生。對於b)編輯:沒有(我可以閱讀,直到std :: cin.eof()發生。) 但是,當我不知道我是否得到a)或ab)問題,我怎麼能打破閱讀過程?
這是我的)...
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer && buffer != '\n')
{
// do some stuff with buffer
}
...和b)
char buffer = ' ';
while(std::cin >> std::noskipws >> buffer)
{
// do some stuff with buffer
}
而且我知道有std::cin.tellg()
獲得流中的當前位置。
編輯:所以好像在文件的情況下,輸入數據流被終止,在std::cin >> std::noskipws >> buffer
得到false
的方式。 什麼上面的代碼做了):
- 它等待用戶進行輸入,然後按[ENTER]
- 然後它遍歷每個CHAR通過在最後一行用戶輸入。
- 然後再次等待用戶進行輸入,然後按[ENTER]
- 無限等待處理迴路
那麼我該怎麼辦呢?
告訴我們你爲什麼不能用'性病:: string'。也許我們也可以幫助你解決這個問題。 –
對於非標準的代碼,你可以在'conio.h'中使用'kbhit()' –
@Rob它來自於exercies,我們不知道'std :: string'。 我們也不能使用非標準的代碼。 我所問的並不是直接要求在exercies中,但我只是好奇... – Lukas