在c中,我可以在scanf中使用換行符([^ \ n])。使用我可以存儲的行。同樣,對於cin,我可以使用getline。如何爲cin提供自己的分隔符?
如果我必須存儲一個段落,我可以使用我自己的特殊字符分隔符(如[^#]或[^ \ t])與c中的scanf函數來模擬功能。
char a[30];
scanf("%[^\#]",a);
printf("%s",a);
如何在cpp中實現與cin對象類似的功能。
謝謝你的時間。
在c中,我可以在scanf中使用換行符([^ \ n])。使用我可以存儲的行。同樣,對於cin,我可以使用getline。如何爲cin提供自己的分隔符?
如果我必須存儲一個段落,我可以使用我自己的特殊字符分隔符(如[^#]或[^ \ t])與c中的scanf函數來模擬功能。
char a[30];
scanf("%[^\#]",a);
printf("%s",a);
如何在cpp中實現與cin對象類似的功能。
謝謝你的時間。
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
}
非常感謝GWW的幫助。我沒有意識到這一點。 :-)我測試了這個,它有幫助。 – CppLearner
是的,我確實在學習C++。謝謝你的附註。我會牢記這一點。 – CppLearner
函數getline有一個可選的第三個參數爲一個分隔符(默認爲''\ n'') –