Jak wczytać napis z pliku w C++


(rafalski) #1

Witam!

Mam problem ze wczytaniem napisu z pliku, próbowałem w ten sposób:

#include 

#include 


using namespace std;


int main()

{

  string s1;

  int ** L,i,j,m,n;

  FILE *in;

 in=fopen("dane.txt","r");


getline(in, s1);


};

ale nie kompiluje


(Sawyer47) #2

Mieszasz C z C++, to nie zadziała, bo std::getline z string przyjmuje obiekt istream. Użyj raczej klas [io]fstream, zobacz tu: http://www.cppreference.com/wiki/io/start


(rafalski) #3

Przepraszam ale zbaraniałem do reszty. Chcę przerobić ten program, by dane pobierał z pliku a nie ze standardowego wejścia i nie wiem jak.

#include 

#include 


using namespace std;


int main()

{

  string s1,s2,sLCS;

  int ** L,i,j,m,n;


  getline(cin,s1);

  getline(cin,s2);


  m = s1.length();

  n = s2.length();


// tworzymy dynamicznie tablicę L


  L = new int * [m + 1];

  for(i = 0; i <= m; i++) L[i] = new int[n + 1];


// obliczamy tablicę L


  for(i = 0; i <= m; i++) L[i][0] = 0;

  for(j = 0; j <= n; j++) L[0][j] = 0;

  for(i = 0; i < m; i++)

    for(j = 0; j < n; j++)

      if(s1[i] == s2[j])

        L[i + 1][j + 1] = 1 + L[i][j];

      else

        L[i + 1][j + 1] = max(L[i + 1][j],L[i][j + 1]);


// wyznaczamy LCS


  sLCS = ""; i = m - 1; j = n - 1;

  while((i >= 0) && (j >= 0))

    if(s1[i] == s2[j])

    {

      sLCS = s1[i] + sLCS;

      i--; j--;

    }

    else if(L[i + 1][j] > L[i][j + 1]) j--;

    else i--;

  cout << sLCS << " : " << L[m][n] << endl;


  getchar();

  return 0;

}

(Sawyer47) #4

Użyj obiektu klasy fstream - _http://www.cppreference.com/wiki/io/start_ i tyle, jak już pisałem std::getline z string przyjmuje obiekt klasy istream i string.