如何为cin提供自己的分隔符?

For*_*ner 6 c++ user-input codeblocks ubuntu-11.04

在c中,我可以使用换行分隔符([^ \n])和scanf.使用我可以存储的线.同样对于cin,我可以使用getline.

如果我必须存储一个段落,我可以使用我自己的特殊字符分隔符来模拟功能,例如[^#]或[^\t]和c中的scanf函数.

char a[30];
scanf("%[^\#]",a);
printf("%s",a);
Run Code Online (Sandbox Code Playgroud)

如何在cpp中实现与cin对象类似的功能.

GWW*_*GWW 14

istream.getline允许您指定要使用的分隔符而不是默认值'\n':

cin.getline (char* s, streamsize n, char delim );
Run Code Online (Sandbox Code Playgroud)

或者更安全,更简单的方法是使用std :: getline.使用此方法,您不必担心分配足够大的缓冲区以适合您的文本.

string s;
getline(cin, s, '\t');
Run Code Online (Sandbox Code Playgroud)

编辑:

就像旁注一样,因为听起来你只是在学习c ++,阅读多个被删除的行的正确方法是:

string s;
while(getline(cin, s, '\t')){
    // Do something with the line
}
Run Code Online (Sandbox Code Playgroud)