私はファイルから行列を読み取っていますが、ファイルの先頭の0を保持できるように、文字列ベクトルに読み込んでいます。今私はベクトル上でいくつかの数学演算を適用したいので、私はそれを2D intベクトルにコピーしたいと思います。私はベクトルを使うのが初めてで、1Dベクトルの例がいくつかあったのを見ましたが、2Dベクトルと混同しています。2D文字列ベクトルを2D intベクトルC++に変換する最良の方法は何ですか?
std::vector< std::vector<string> > data;
std::vector< std::vector<int> > res;
std::ifstream f("input.txt", ios::binary);
std::string line;
while(std::getline(f,line))
{
std::vector<string> line_data;
std::istringstream iss(line);
std::string value;
while(iss >> value)
{
line_data.push_back(value);
}
data.push_back(line_data);
}
上記のコードは、ファイルを1行ずつ文字列として読み込み、それをdataという名前の2次元文字列ベクトルに書き込みました。私の目標は、2Dデータベクトルを2D resベクトルにコピーすることです。どのように進めるのですか?
input.txtは正方形のブール値の行列です。例えば
0101
1010
1100
0001
編集:
for (unsigned int i = 0; i < data.size(); ++i)
{ std::vector<int> temp_data;
std::transform(data[i].begin(), data[i].end(),
std::back_inserter(temp_data),
[](const auto& element) { return std::stoi(element); });
res.push_back(temp_data);
}
が、私はここで、自動エラーの無効な使用を取得しています:
I変換機能を使用してみましたし、私が得たところこれは推奨されているように私はこれが2Dベクトルのために正しいと確信していません。
ご入力されたデータを見られなかったので、私はオフになる場合もありますが、私は言うだろう、代わりにiss' 'から文字列のトークンを読んで、番号をお読みください。 'int値; while(iss >> value){...} ' –
私はこれを試しましたが、ファイルを読み込んでいる間に先頭の0が緩んでいます。 –
これらのトークンのそれぞれを4つの数字に変換したいと考えていますか? –