У меня есть 4 * 4 матрица в 4 файлах. Мне нужно прочитать первые два элемента из каждого файла и отобразить его в столбце. Ниже приведен пример:Прочитайте первые два элемента из нескольких файлов C++
File 1 File 2 File 3 File 4
1 2 3 4 2 3 4 5 3 5 8 9 1 4 6 9
3 4 4 5 3 4 5 6 6 7 9 2 6 0 8 6
1 2 4 5 4 5 6 6 8 7 6 5 4 5 6 7
1 2 3 4 4 4 7 9 3 4 5 6 5 6 7 9
мне нужно отобразить первую строку 2 элементов столбцов из файла 1, первый ряд элементов 2 столбцов из файла 2 и так далее:
1 + 2 (File 1, 1st row 2 elements)
2 + 3 (File 2, 1st row 2 elements)
3 + 5 (File 3, 1st row 2 elements)
1 + 4 (File 4, 1st row 2 elements)
3 + 4 (file 1, 2nd row 2 elements)
3 + 4 (file 2, 2nd row 2 elements)
6 + 7 (File 3, 2nd row 2 elements)
и так далее ..
//std::fstream infile;
string st1 = "file_";
string st2 = ".txt";
string st3 = "_";
string filename;
string mystring;
float fading[16][16];
for(int row = 0 ; row < 5 ; ++row)
{
for(int column = 0 ; column < 5 ; ++column)
{
for (int i = 1; i < 3; i++)
{
for(int j = 1; j < 3 ;j++)
{
stringstream ss, ss1;
ss << i;
ss1 << j;
filename = st1 + ss.str() + st3 + ss1.str() + st2;
std::fstream infile;
infile.open(filename.c_str());
if(infile.is_open())
{
infile >> fading[row][column];
cout << "fading[" << row << "][" << column << "] " << fading[row][column] << std::endl;
}
else
std::cout << " file " << filename << " not open" << std::endl;
infile.close();
}
}
}
}
}
Я не могу получить первую строку из двух элементов из каждого файла в цикл. Каждый раз, когда файл закрывается, программа снова запускается из 1 строки первого файла.
Почему бы не прочитать все элементы, которые вам нужны из каждого файла, сохранить их, когда вы идете, а затем выполнить ваши вычисления? – Borgleader
Создайте для 4 'ifstream' переменных и не закрывайте их до конца программы. –
Если вы закрываете и открываете файл, вы снова будете читать с первого – banarun