在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'') –