我从.txt文件中读取数据时遇到问题,我有超过一百万行,如下所示:
57 1599 1 2.463 1.247 5.644
58 0 1 3.675 2.175 1.21
我必须加载数据并将每个数字加到不同的数组或向量中。
这是我的代码,但是工作太慢。
void divideString(std::string text)
{
std::istringstream iss(text);
std::vector<std::string> results(std::istream_iterator<std::string>{iss},
std::istream_iterator<std::string>());
coordinates tmp;
tmp.x = std::stoi(results[0]);
tmp.y = std::stoi(results[1]);
coordinatesCells.push_back(tmp);
phase.push_back(std::stoi(results[2]));
orientation tmp2;
tmp2.k1 = std::stof(results[3]);
tmp2.k2 = std::stof(results[4]);
tmp2.k3 = std::stof(results[5]);
orientationCells.push_back(tmp2);
}
void loadDataFromFile()
{
std::string line;
std::ifstream myfile("file.txt");
if (myfile.is_open())
{
while (getline(myfile, line))
{
divideString(line);
}
}
else
{
std::cout << "Unable to open file";
}
}
另一个问题是有时我在行中会有不同数量的数据。
您是否知道如何快速加载此数据?