这就是我正在做的,我从 .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() 因为我正在尝试访问列表的元素,无论如何我可以做到这一点吗?
基本上我想做的就是从一个列表中获取我的字符串并将它们更改为整数,同时保持列表格式
如果有任何帮助,我们将不胜感激
最佳答案
您需要 (*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
是一个特别好的选择。即使在理论上应该有利于链表的情况通常也不会,至少根据我的经验。
关于c++ - 改变列表中元素的值 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718996/