我需要解析一个包含逗号分隔的对象列表的字符串,例如a="1,2,3,4,5"
。
我还希望对象类型可以互换,它由typedef type val_type
定义。
我的方法是
vector<val_type> v();
istringstream iss(a); string x; val_type y;
while (getline(iss, x, ',') && istringstream(x) >> y) v.push_back(y);
哪个有效,但与使用atoi()假设对象类型是整数相比,显然运行得慢得多(约5倍)。
while (getline(iss, x, ',')) v.push_back(atoi(x.c_str()));
预期性能会有很大差异吗?有什么聪明的方法可以解决这个问题吗?