私はフォーマットされたテキストファイルを持っています:
"stringx, stringy"
"stringx, stringy"
等
コードを以下に示して、順序付けされていないマップを読み取り、テキストを解析し、stringx をキーにして stringy を値にする方法を示します。
私が解決しようとしている問題については、逆の順序で別のマップも必要です。つまり、キーが stringy で、値が stringx です。
値が正しく入力されています。straightData を出力すると、
"stringx:stringy"
しかし、reverseDataを出力すると、代わりに
"stringy
:stringx"
これが私のプログラムの全体的な範囲の問題であるかどうかはわかりません (1 つのキーを取得し、それをリストに追加し、キーから値を取得し、それを使用して別のキーと値のペアを検索する必要があります)。 . ただし、データに自動的に改行が含まれている場合は、
stringx
と同じである
(space)
stringx
?
私が理にかなっているのかどうかはわかりませんが、いつものように、すべての助けが大歓迎です!
typedef unordered_map<string, string> mymap;
int main()
{
mymap map1;
mymap map2;
list <pair<string, string>> list1;
ifstream myFile;
myFile.open("values.txt");
string forParse;
string first, second;
while (getline(myFile, forParse))
{
stringstream x(forParse);
getline(x, first, ',');
getline(x, second);
map1[first] = second;
map2[second] = first;
}
for (auto& x: map2) cout << x.first << ":" << x.second << endl;