重载>>
运算符,用来匹配并跳过流中的分隔符:
1 | std::istream& operator>>(std::istream& ins, const char* s) { |
运行示例:1
2
3
4
5
6
7int main()
{
int v[4] = {0, 0, 0, 0};
std::istringstream("1,2;3,4") >> v[0] >> "," >> v[1] >> ";" >> v[2] >> "," >> v[3];
std::cout << v[0] << "," << v[1] << ";" << v[2] << "," << v[3]; // 1,2;3,4
return 0;
}
如此,数据输入和分隔符检测仅用一条>>
语句即可完成,视觉上无需为额外的分隔符检查代码打断,而且输入输出的代码格式具有优雅的对应关系。
注意:虽然示例中的分隔符都只有一个字符,但并不能通过重载std::istream& operator>>(std::istream&, const char)
来实现相似的功能,因为编译器无法将其与std::istream& operator>>(std::istream&, char&)
区分。