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()を使用できません。とにかくこれを行うことができますか?

基本的に私がやろうとしているのは、1つのリストから文字列を取得し、リスト形式を維持しながら整数に変更することです。

どんな助けでも本当にありがたいですありがとう

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); });

よく知らない場合は、最後の行はラムダです(C ++ 11の新機能)。かなり新しいコンパイラ(gcc 4.7.x以降、VC ++ 2010以降など)を使用していると仮定すると、問題はありません。

std::vectorまた、の代わりに使用することを真剣に検討したいと思いstd::listます。私は事実上std::list、特に良い選択だとは思っていません。理論的にはリンクリストを支持するはずの状況でさえ、少なくとも私の経験では、通常はそうではありません。

于 2012-10-04T01:04:13.913 に答える