ルビーで作成したハッシュをC++マップに変換する方法はありますか?私はファイルにハッシュを印刷しようとしましたが、C++マップに読み込む方法を知らないです。ハッシュは、次のように印刷されルビーハッシュをC++マップに変換する
:
stringA => 123 234 345 456 567
stringB => 12 54 103 313 567 2340
...
数値の量は、各関連付けられた文字列のために変化し、文字列はユニークです。
各行の文字列と配列の部分を個別に読み取るにはどうすればよいですか。はい、それは可能である
#include <unordered_map>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
std::ifstream infile("thefile.txt");
std::string line;
std::unordered_map<std::string, std::vector<int>> v;
while (std::getline(infile, line)
{
std::string key, sep;
int n;
std::istringstream iss(line);
if (!(iss >> key >> sep)) { /* error */ }
if (sep != "=>") { /* error */ }
while (iss >> n) v[key].push_back(n);
// maybe check if you've reached the end of the line and error otherwise
// or maybe add the option to end a line at a comment character
}
文字列にスペースが含まれていると、これは失敗します。 'スペース付きの文字列=> 1 2 3' –
@DavidRodríguez-dribeas:そうです。必要な場合は、最初の入力操作を '=>'を待つループで置き換えるか、 'substr()'を使用して区切り文字を探します。 OPが必要かどうかを明確にするためにOPを歓迎します。 –
文字列にはスペースは含まれませんが、文字列として有効な数字にすることができます。 thanks – zanbri