`y = atoi(x)`vs`x>>你的表现

时间:2014-04-08 09:35:53

标签: c++ performance stream atoi

我需要解析一个包含逗号分隔的对象列表的字符串,例如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()));

预期性能会有很大差异吗?有什么聪明的方法可以解决这个问题吗?

0 个答案:

没有答案