- unsigned nondigit = i->size();
- for(unsigned j=0; j<i->size(); ++j)
- if(!isdigit((*i)[j]))
- {
- nondigit = j;
- break;
- }
-
- if(!nondigit || nondigit<i->size()-1)
- throw InvalidParameterValue("Malformed article number");
-
- Part part;
- part.number = lexical_cast<unsigned>(i->substr(0, nondigit));
- part.letter = nondigit<i->size() ? (*i)[nondigit] : 0;
- parts.push_back(part);
- }
-}