Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wczytywanie z pliku

Ostatnio zmodyfikowano 2016-01-25 14:05
Autor Wiadomość
locf
Temat założony przez niniejszego użytkownika
Wczytywanie z pliku
» 2016-01-25 10:13:42
Mam wczytać kolejne wiersze z pliku "jakis.txt" oraz wydrukować pierwszy i ostatni znak w każdym wierszu.
Czy to powinno mniej więcej wyglądać jak poniżej?

C/C++
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream inFile;
    inFile.open( "jakistam.txt" );
    string napis;
    int dlugosc = 0;
    while( inFile >> napis )
    {
        dlugosc = napis.size();
        for( int i = 0; i < dlugosc - 1; i++ )
             cout << napis[ i ] << " i " << napis[ dlugosc - 1 ];
       
    }
    inFile.close();
    return 0;
}
P-143978
carlosmay
» 2016-01-25 11:25:16
inFile >> napis
 nie wczytuje wiersza tylko jeden wyraz.
Do tego służy std::getline().

Zmienna dlugosc jest zbędna. Można używać bezpośrednio *.size(), np.
std::cout << napis[ 0 ] << " " << napis[ napis.size() - 1 ];

Petla for() w jakim celu?
P-143979
locf
Temat założony przez niniejszego użytkownika
» 2016-01-25 13:14:59
Dzięki.
Czy teraz jest poprawnie?

 
C/C++
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream inFile;
    inFile.open( "jakistam.txt" );
    string napis;
    while( inFile.good() )
    {
        getline( inFile, napis );
        cout << napis[ 0 ] << " i " << napis[ napis.size() - 1 ];
    }
    inFile.close();
    return 0;
}
P-143985
carlosmay
» 2016-01-25 13:45:22
Czy teraz jest poprawnie?
Raczej nie.

C/C++
while( inFile.good() ) // tutaj sprawdza czy plik.good(), a po wczytaniu ostatniego wiersza, ponowne uzycie getline() zglosi 'out of range'
{
    getline( inFile, napis ); // wczytujemy ostatnia linie i plik nadal jest *.good()
    cout << napis[ 0 ] << " i " << napis[ napis.size() - 1 ];
}

Lepszym rozwiązaniem będzie
C/C++
while( getline( inFile, napis ) )
{
    cout << napis[ 0 ] << " i " << napis[ napis.size() - 1 ] << endl;
}
P-143986
locf
Temat założony przez niniejszego użytkownika
» 2016-01-25 14:05:15
Dzięki za pomoc !
P-143987
« 1 »
  Strona 1 z 1