我必须使用标准C ++库(没有提升)读取逗号分隔的两个数字的stdin。因此,用户将以格式
在控制台中键入数字实施例
2,3 3,10
如果是C,我可以做scanf(“%d,%d”,i,j);我如何用C ++做到这一点? cin是默认使用空格作为分隔符,如何更改cin的分隔符?
答案 0 :(得分:4)
我将使用的方法是使用自定义comma
操纵器:
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;
}
然后,您可以将comma
注入应该读取逗号的位置,例如:
int i, j;
if (in >> i >> comma >> j) {
// process the data
}