2

今、宿題をする準備をしていて、まず自分のやり方で何をしようとしているのかを整理しています. そのうちの 1 つは、A1、B2、C3 などの形式でリストに追加する名前のリストを準備する必要があります。現在テストしているのは、for ループを介してそれらを追加する方法です。まだすべてを行っているわけではないことに注意してください。アイテムが正しい形で作られていることを確認しているだけです. 次のコードがあります。

list<string> L; //the list to hold the data in the form A1, B2, etc.
char C = 'A'; //the char value to hold the alphabetical letters
for(int i = 1; i <= 5; i++)
{ 
    string peas; //a string to hold the values, they will be pushed backed here
    peas.push_back(C++); //adds an alphabetical letter to the temp string, incrementing on every loop
    peas.push_back(i); //is supposed to add the number that i represents to the temp string
    L.push_back(peas); //the temp string is added to the list
}

文字の文字が追加され、値が増加します(ABCなどとして表示されます)が、私が抱えている問題は、整数値をpush_backすると、実際には整数値ではなくASCII値をpush_backすることです整数に関連しています(それは私の推測です-絵文字を返します)。

ここでの解決策は、整数値を char に変換することだと考えていますが、これまでのところ、それを調べるのは非常に混乱しています。to_string (エラーが発生する) と char(i) (ちょうど i と同じ結果) を試しましたが、どれも機能しませんでした。基本的に、iをASCII値ではなく、実際の整数を表すchar値として追加するにはどうすればよいですか?

私の TA は通常、彼に送信されたコードを実際には読み取らず、インストラクターは応答に時間がかかりすぎるため、ここでこの問題を解決できることを望んでいました.

ありがとうございました!

4

1 に答える 1

5

push_back個々の文字を文字列に追加します。必要なのは、数値を文字列に変換してから、この文字列を別の文字列に連結することです。それは根本的に異なる操作です。

数値を文字列に変換するには、 を使用しますto_string。文字列を連結するには、次のように単純に使用できます+

std::string prefix = std::string(1, C++);
L.push_back(prefix + std::to_string(i));

コンパイラが C++11 をまだサポートしていない場合は、次を使用した解決策がありますstringstream

std::ostringstream ostr;
ostr << C++ << i;
L.push_back(ostr.str());
于 2013-10-06T18:11:15.100 に答える