2016-07-14 86 views
-3

我想讀取巨大的輸入作爲刺痛,但它不適用於我的Linux機器。當我嘗試插入字符串(巨大)時,它阻止了我在達到2998個字符後添加任何字符。如何使用C++中的getline()函數從文件中打印字符串

std::string s; 
std::cin.clear(); 
cout<< "Enter string"<<endl;; 
getline(cin, s); 

所以我決定在文件中添加巨大的字符串並從那裏讀取。現在我有一個文件,其中只包含一行,我將如何打印字符串(getline()不起作用,因爲它無法在我的linux系統中讀取超過2998字節)。

例如我有以下輸入(一個文件的一部分),

cat\n\ndog\ts\n\n\nmarket\g\he\n 

輸出應該是:

cat 
dog\ts 
market\g\he 

感謝你的幫助。

+1

你可以使用'std :: istream :: get()'來讀取char字符串。 – DimChtz

+1

你得出了一個不正確的結論 - 它不是'std :: getline()'的限制,它是你的終端!也就是說,閱讀一個巨大的字符串聽起來像是一個設計錯誤你究竟想要做什麼? –

+1

2998字節的限制來自哪裏?下一個明顯的解決方案是在逐行打印之前先讀取塊並做一些小處理。 – Arunmu

回答

1

難道你不能用ifstream做類似的事嗎?

BUFFER_MAX = 3000; //Whatever you want to be 
char[BUFFER_MAX] buffer; 
std::cin.getline(buffer,BUFFER_MAX-1); 

這只是從這個文檔脫掉:std::istream::getline()

相關問題