Класс Fstream - проблема с оператором '››'

простая программа, которая создает массив с числами int из файла .txt, который выглядит как

2 3
5 7
4 2
y x
y x
...

так что это просто nx2 (где n может быть неограниченным количеством строк). а затем заполнить новый файл этим массивом (позже я добавлю код для редактирования этого массива с помощью какого-нибудь забавного алгоритма).

Я написал, что:

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(){
    ofstream outFile;
    ofstream fout;
    fout.open("krol.txt");
    int l=0;
    int i=2;
    char ch;
    while (fout.good()){
        if (fout >> ch=='\n') l++;
    }
    fout.close();
    fout.open("krol.txt");
    int temp[l][2];
    int savel=l;
    l=0;
        while (fout >> (temp[l][i])){
        i++;
        if(i==2){ 
         i=0; l++;
        }
    }
    outFile.open("save.txt");
    for (int i=0, j=0;j<savel;i++){
        if (i==2) {
        i=0; j++;
        }
        outFile << temp[j][i];
    }
    system("PAUSE");
    return 0;
    }

но он возвращает:

13 15 C:\Users\Filip\Dysk Google\Infa\krol.cpp [Error] no match for 'operator>>' in 'fout >> ch' 

20 29 C:\Users\Filip\Dysk Google\Infa\krol.cpp [Error] no match for 'operator>>' in 'fout >> temp[l][i]' 

Любые идеи?


person Filip Bartuzi    schedule 11.03.2013    source источник
comment
Это связано с разницей между выходным потоком и входным потоком.   -  person juanchopanza    schedule 12.03.2013


Ответы (2)


ofstream – это выходной файловый поток; вы не можете прочитать его, используя >>.

Вместо ofstream fout; я подозреваю, что вы хотите ifstream fin;.

person Alec    schedule 11.03.2013

std::ofstream — это выходной поток, поэтому у него нет оператора входного потока>>. Если вы хотите транслировать в файл, вам нужно std::ifstream.

person juanchopanza    schedule 11.03.2013