C++转换问题

C++ transform issue

本文关键字:问题 转换 C++      更新时间:2023-10-16

我需要从csv文件中读入并存储在整数数组中,在行中读取并用boost::split拆分行后,我得到了字符串LineItems的向量。我可以通过以下方式将其转换为整数数组:

for (int i=0; i<=10; i++) {
   WorkArr[i]=stoi(LineItems[i]);
}

(我知道csv的大小和格式,因此我可以使用数组来存储。但是,我想使用转换来执行此任务:

transform(LineItems.begin(),LineItems.end(),WorkArr,stoi);

但是编译器说它不知道使用哪个重载版本的stoi(我使用的是VC++(。

我知道我可以这样解决方法:

int MyStoI(string & ss) return stoi(ss);
transform(LineItems.begin(),LineItems.end(),WorkArr,MyStoI);

但这引入了另一个功能MyStoI .有什么方法可以在不引入新功能的情况下执行此操作?

雷德斯

林志峰

使用 lambda 怎么样? 像这样:

std::transform(LineItems.begin(), LineItems.end(),
    std::back_inserter(WorkArr),
    [](const std::string& str)
{
    return std::stoi(str);
});

如果WorkArr是一个普通数组(不是向量(,你可以像这样使用它:

std::transform(LineItems.begin(), LineItems.end(), WorkArr,
    [](const std::string& str)
{
    return std::stoi(str);
});