如何为cin提供自定义分隔符?

6
在C语言中,我可以使用换行符([^\n])与scanf一起使用。使用它,我可以存储一行。类似地,对于cin,我可以使用getline。
如果我要存储一段话,我可以使用自己的特殊字符分隔符,如[^#]或[^\t],并使用C语言中的scanf函数来模拟此功能。
char a[30];
scanf("%[^\#]",a);
printf("%s",a);

如何在CPP中实现类似于cin对象的功能。

getline函数有一个可选的第三个参数,用于指定分隔符(默认为'\n')。 - Foo Bah
1个回答

16

istream.getline允许您指定一个分隔符,以代替默认的'\n'

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

或者更安全、更简便的方法是使用std::getline。使用这种方法,您不必担心分配足够大的缓冲区来容纳文本。

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

编辑:

顺便提一下,因为听起来你正在学习c++,正确的读取多个分隔符行的方法是:

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

1
非常感谢GWW的帮助。我之前不知道这个方法。 :-) 我测试了一下,确实有用。 - Forever Learner
是的,我确实正在学习C++。谢谢你的提示,我会记住的。 - Forever Learner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接