这就是我正在做的事情,我从.txt文件中获取一些信息当然,当我得到它们时,我将它们作为字符串列表中的字符串... ...(我知道它可能是字符,但在此例如是字符串)所以当我将它们插入另一个列表时,它应该是这样的
list<int> l;
//i is the iterator for the 1st list that already has all the strings
l.push_back(atoi(*i.c_str()));
我不能使用c_str(),因为我试图访问列表的元素,无论如何我可以这样做?
基本上我尝试做的只是从一个列表中获取字符串并将其更改为整数,同时保持列表格式
任何帮助都会非常感谢谢谢
答案 0 :(得分:5)
您需要(*i).c_str()
或i->c_str()
。
你可能希望整个工作有点不同,特别是在一种不需要你直接处理迭代器的方式。例如,让我们假设你拥有的是:
list<string> strings;
list<int> ints;
然后我几乎肯定会用std::transform
完成这项工作,可能是这样的:
std::transform(strings.begin(), strings.end(), std::back_inserter(ints),
[](std::string const &in) { return atoi(in.c_str()); });
或:
transform(begin(strings), end(strings), std::back_inserter(ints),
[](string const &in) { return stoi(in); });
如果您不熟悉它,那最后一行是lambda(C ++ 11的新版本)。假设您正在使用一个相当新的编译器(例如,gcc 4.7.x或更新版本,VC ++ 2010或更新版本),它应该不是问题。
我还要认真考虑使用std::vector
代替std::list
。我几乎从未发现std::list
是一个特别好的选择。即使理论上有利于链表的情况通常也没有,至少在我的经验中是这样。