忽略流中输入字符的最佳方法

时间:2019-06-20 14:32:51

标签: c++ stream scanf ignore extraction-operator

给出输入:const char input[] = "lorem\t, ipsum"和预期的输出:char first[size(input)]second[size(input)],我可以这样做:

sscanf(input, "%s , %s", first, second);

使用,忽略空格和定界字符。我想对流进行相同的操作,但是我能想到的最好的方法是:

istringstream foo(input);

foo >> first;
foo.ignore(numeric_limits<streamsize>::max(), ',');
foo >> second;

我真正想要的是更多类似的东西:

istringstream(input) >> first >> ',' >> second;

但显然这是非法的。我想到了:

  1. 将分隔符提取到其中的虚拟值
  2. 正则表达式迭代器

我不知道是否有一个更优雅的解决方案,我当然希望可以做一些内联的事情,类似于sscanf解决方案。

Live Example

0 个答案:

没有答案