行と区切り文字を受け取り、行を区切り、フロートのベクトルを返す関数を作成しました( split
Javaの関数のように)。これは機能です:
vector<float> extractNumbers(string line, char delimiter) {
vector<float> a;
float f;
string forNow = "";
for (unsigned int i = 0; i < line.size(); i++) {
if (line.at(i) == delimeter) {
f = ::atof(forNow.c_str());
cout << ::atof(forNow.c_str()) << endl;
a.push_back(f);
forNow = "";
} else {
forNow += line.at(i);
}
}
f = ::atof(forNow.c_str());
cout << f << endl;
a.push_back(f);
return a;
}
これは私が試しているテキストファイルです:
3 3
1 1 1
1 2 1
1 1 1
私はこの関数を呼び出します:パラメータをvector<float> floatLine = extractNumbers(line, ' ');
印刷しようとすると、テキストと同じように数字を受け取りますが、印刷または受け取ると、最初の行の最初の 3 ではなく 0 が返されます。何かご意見は?forNow
f
::atof(forNow.c_str())