How to read stdin in standard C++ for two numbers separated by comma?
本问题已经有最佳答案,请猛点这里访问。
我必须使用标准C++库(没有Boost)读取逗号分隔的两个数字。所以用户将在控制台中按格式键入数字,
实例
2,33、10
如果是C,我可以做SCANF("%d,%d",i,j),我怎么做C++?cin默认使用空格作为分隔符,如何更改cin的分隔符?
我将使用的方法是使用自定义
1 2 3 4 5 6 7 8 9 10 11 12 | std::istream& comma(std::istream& in) { std::istream::sentry cerberos(in); if (cerberos) { if (in.peek() == ',') { in.ignore(); } else { in.setstate(std::ios_base::failbit); } } return in; } |
然后,您只需在应该读取逗号的地方注入
1 2 3 4 | int i, j; if (in >> i >> comma >> j) { // process the data } |