如何在已知的struct C ++中将字符串解析为数字

时间:2014-12-26 19:51:49

标签: c++ parsing

我有一个字符串

string date="DD/MM/YYYY";

我如何获得三个数字

day=atoi(DD);
month=atoi(MM);
year=atoi(YYYY);

THX

3 个答案:

答案 0 :(得分:2)

int d=0, m=0, y=0;
sscanf(date.c_str(),"%d/%d/%d",&d,&m,&y); 

答案 1 :(得分:2)

使用自定义操纵器我会这样做

if (std::istringstream(date) >> std::noskipws
    >> day >> slash >> month >> slash >> year) {
    ...
}

操纵器看起来像这样:

std::istream& slash(std::istream& in) {
    if (in.peek() != '/') {
        in.setstate(std::ios_base::failbit);
    }
    return in;
}

答案 2 :(得分:0)

或者你可以这样做,

int day = atoi(date.substr(0,2).c_str());
int month = atoi(date.substr(3,2).c_str());
int year = atoi(date.substr(6,4).c_str());

使用c_str()是因为atoi使用char *和c_str()来实现此目的。