gpt4 book ai didi

C++ 转换问题

转载 作者:行者123 更新时间:2023-11-30 03:24:09 26 4
gpt4 key购买 nike

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

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 是普通数组(不是 vector ),您可以像这样使用它:

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

关于C++ 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com