首页 > 解决方案 > 忽略流中输入字符的最佳方法

问题描述

给定输入:和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

标签: c++streamscanfextraction-operator

解决方案


推荐阅读