У меня есть эта матрица в строке:
-78.45 5120 45.369 7.456
-0.140 1.012 1.161 7.456
-4.4287 8.963 1.121 7898
-8.753 8.159 3.852 2.415
0.000 2.456 4.655 6.041
0.000 3.132 8.275 1.788
7.489 8.056 7.288 5.698
4.050 7.456 7.340 2.025
0.090 9.478 9.395 6.416
1.132 6.866 8.450 2.126
6.222 5.142 7.596 0.56
9.121 2.256 5.641 3.741
8.896 1.488 2.858 2.456
Я хотел бы просмотреть ее и сохранить в матричном векторе или матрице с плавающей точкой.Я действительно могу сохранить его в одном векторе, это функциональный код:
int main()
{
std::istringstream str(
"-78.45 5120 45.369 7.456\n"
"-0.140 1.012 1.161 7.456\n"
"-4.4287 8.963 1.121 7898\n"
"-8.753 8.159 3.852 2.415\n"
"0.000 2.456 4.655 6.041\n"
"0.000 3.132 8.275 1.788\n"
"7.489 8.056 7.288 5.698\n"
"4.050 7.456 7.340 2.025\n"
"0.090 9.478 9.395 6.416\n"
"1.132 6.866 8.450 2.126\n"
"6.222 5.142 7.596 0.56\n"
"9.121 2.256 5.641 3.741\n"
"8.896 1.488 2.858 2.456\n");
std::string space = " ";
std::string line;
size_t l_position = 0;
std::vector<float> vectorNumber;
while (std::getline(str, line)) {
while ((l_position = line.find(space)) != std::string::npos)
{
float nombre = std::stof(line.substr(0, l_position));
vectorNumber.push_back(nombre);
line.erase(0, l_position + space.length());
}
vectorNumber.push_back(std::stof(line));
}
int w = 0;
for(vector<float>::iterator it=vectorNumber.begin(); it!=vectorNumber.end(); ++it)
{
cout << *it << " ";
w++;
if (w==4){
cout << endl;
w = 0;
}
}
return 0;
}
Когда я пытаюсь сохранить его в векторе, последний блок чисел каждой строки удаляется, и я нене знаю почему.Я схожу с ума, вы можете мне помочь?
Это мой код:
int main()
{
std::istringstream str(
"-78.45 5120 45.369 7.456\n"
"-0.140 1.012 1.161 7.456\n"
"-4.4287 8.963 1.121 7898\n"
"-8.753 8.159 3.852 2.415\n"
"0.000 2.456 4.655 6.041\n"
"0.000 3.132 8.275 1.788\n"
"7.489 8.056 7.288 5.698\n"
"4.050 7.456 7.340 2.025\n"
"0.090 9.478 9.395 6.416\n"
"1.132 6.866 8.450 2.126\n"
"6.222 5.142 7.596 0.56\n"
"9.121 2.256 5.641 3.741\n"
"8.896 1.488 2.858 2.456\n");
std::string space = " ";
std::string line;
size_t l_position = 0;
std::vector<float> vectorNumber;
std::vector<vector<float>> vectorOfVectorNumber;
while (std::getline(str, line)) {
while ((l_position = line.find(space)) != std::string::npos)
{
float nombre = std::stof(line.substr(0, l_position));
vectorNumber.push_back(nombre);
line.erase(0, l_position + space.length());
}
vectorOfVectorNumber.push_back(vectorNumber);
}
int w = 0;
for (int i = 0; i < vectorOfVectorNumber.size(); i++)
{
for (int j = 0; j < vectorOfVectorNumber[i].size(); j++)
{
cout << vectorOfVectorNumber[i][j] << " ";
}
cout << endl;
}
return 0;
}
Я бы хотел самое простое решение, чтобы сохранить его, даже если оно находится во вкладке с плавающей точкой.