假设我有这种格式的行
“word word 12 YR”或“word word 10 MO”
我想将其转换为
char * 分别包含“12Y”或“10M”。
格式为两个单词,后跟数字,后跟表示年份或月份的单词。单词以空格/制表符分隔。目前,我正在使用 strtok 函数
谢谢
最佳答案
实现此目的的一种方法是(不进行错误检查,使用 boost
):
string s = "word word 10 MR";
string res;
tokenizer<> tok(s);
tokenizer<>::iterator iter = tok.begin();
while(iter != tok.end())
{
try
{
int n = lexical_cast<int>(*iter);
}
catch(bad_lexical_cast& e)
{
++iter;
continue;
}
break;
}
res = *iter;
++iter;
res = res + (*iter)[0];
非升压解决方案:
using namespace std;
string s = "word word 10 MR";
string res;
stringstream ss(s);
istream_iterator<string> iter(ss);
istream_iterator<string> end;
while(iter != end)
{
istringstream iss(*iter);
int n;
iss>>n;
if( ! iss.fail())
{
break;
}
++iter;
}
res = *iter;
++iter;
res = res + (*iter)[0];
关于c++ - 从字符串中解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856637/