如何在标准C ++中读取由逗号分隔的两个数字的stdin?

时间:2013-12-19 17:29:36

标签: c++ std

我必须使用标准C ++库(没有提升)读取逗号分隔的两个数字的stdin。因此,用户将以格式

在控制台中键入数字

实施例

2,3 3,10

如果是C,我可以做scanf(“%d,%d”,i,j);我如何用C ++做到这一点? cin是默认使用空格作为分隔符,如何更改cin的分隔符?

1 个答案:

答案 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
}