0

这就是我正在做的事情,我从 .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() 因为我试图访问列表的元素无论如何我可以做到这一点吗?

基本上我想做的只是从一个列表中获取我的字符串并将它们更改为整数,同时保持列表格式

任何帮助将不胜感激谢谢

4

1 回答 1

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这是一个特别好的选择。至少在我的经验中,即使理论上应该支持链表的情况通常也不会。

于 2012-10-04T01:04:13.913 回答