我制作了一个函数,它接收一行和一个分隔符,分隔行并返回一个浮点向量(如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, ' ');
当我尝试打印forNow
参数时,我收到的数字就像在文本中一样,但是当我打印f
或::atof(forNow.c_str())
收到 0 而不是第一行中的前 3 个时。有什么想法吗?