我必须使用标准的C++库(没有boost)读取用逗号分隔的两个数字的标准输入。因此用户将在控制台中以以下格式键入数字,
示例
2, 3 ,10
如果是C,我可以做scanf("%d,%d",i,j);我怎么在C++中做呢?cin默认使用空格作为分隔符,如何更改cin的分隔符?
发布于 2013-12-20 01:36:06
我将使用的方法是使用自定义的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
}https://stackoverflow.com/questions/20688037
复制相似问题