2011-09-04 174 views
4

在c中,我可以在scanf中使用換行符([^ \ n])。使用我可以存儲的行。同樣,對於cin,我可以使用getline。如何爲cin提供自己的分隔符?

如果我必須存儲一個段落,我可以使用我自己的特殊字符分隔符(如[^#]或[^ \ t])與c中的scanf函數來模擬功能。

char a[30]; 
scanf("%[^\#]",a); 
printf("%s",a); 

如何在cpp中實現與cin對象類似的功能。

謝謝你的時間。

+0

函數getline有一個可選的第三個參數爲一個分隔符(默認爲''\ n'') –

回答

10

istream.getline讓你指定一個deliminator使用,而不是默認'\n'

cin.getline (char* s, streamsize n, char delim); 

或更安全,更簡單的方法是使用std::getline。使用這種方法,您不必擔心分配足夠大的緩衝區以適合您的文本。

string s; 
getline(cin, s, '\t'); 

編輯:

正如一個側面說明,因爲它聽起來就像你剛開始學習C++讀取多個deliminated線的正確方法是:

string s; 
while(getline(cin, s, '\t')){ 
    // Do something with the line 
} 
+1

非常感謝GWW的幫助。我沒有意識到這一點。 :-)我測試了這個,它有幫助。 – CppLearner

+0

是的,我確實在學習C++。謝謝你的附註。我會牢記這一點。 – CppLearner

相關問題