【问题标题】:How to provide your own delimiter for cin?如何为cin提供自己的分隔符?
【发布时间】:2011-11-09 23:44:45
【问题描述】:

在 c 中,我可以将换行分隔符 ([^\n]) 与 scanf 一起使用。使用它我可以存储线路。同样对于cin,我可以使用getline。

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

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

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

【问题讨论】:

  • getline 采用可选的第三个参数作为分隔符(默认为 '\n'

标签: c++ user-input codeblocks ubuntu-11.04


【解决方案1】:

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
}

【讨论】:

  • 非常感谢 GWW 的帮助。我没有意识到这一点。 :-) 我对此进行了测试,它有所帮助。
  • 是的,我确实在学习 c++。感谢旁注。我会记住这一点。
猜你喜欢
  • 1970-01-01
  • 2017-10-31
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2011-03-24
相关资源
最近更新 更多