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

[C++] problem z wczytaniem pliku, jeśli przy pierwszej próbie nastąpił błąd

Ostatnio zmodyfikowano 2017-06-09 23:39
Autor Wiadomość
ws89
Temat założony przez niniejszego użytkownika
[C++] problem z wczytaniem pliku, jeśli przy pierwszej próbie nastąpił błąd
» 2017-06-09 22:17:26
Dobry wieczór,

dlaczego jeśli raz źle wpiszę nazwę pliku z którego chce wczytywać dane, to w kolejnej próbie nie widzi tego pliku nawet jeśli wpiszę go poprawnie ? Proszę o wskazówki, ale rozwiązanie z wyjaśnieniem również mile widziane :)

Pozdrawiam

C/C++
fstream dane;
string nazwa;

do
{
    cout << "Z jakiego pliku wczytywac dane?\n";
    cin >> nazwa;
   
    dane.open( nazwa.c_str() );
    if( !dane.good() )
    {
        cerr << "Problem z otwarciem pliku " << nazwa << endl;
       
    };
} while( !dane.good() );


P-162307
latajacaryba
» 2017-06-09 22:31:00
Spróbuj wstawić to
std::cin.sync();
 przed cin
P-162309
ws89
Temat założony przez niniejszego użytkownika
» 2017-06-09 22:39:49
C/C++
do
{
    cout << "Z jakiego pliku wczytywac dane?\n";
   
    cin.sync();
    cin >> nazwa;
   
    dane.open( nazwa.c_str() );
    if( !dane.good() )
    {
        cerr << "Problem z otwarciem pliku " << nazwa << endl;
       
    };
} while( !dane.good() );


próbowałem tak oraz próbowałem std::cin.sync(); i oba nie działają
P-162310
Chowan
» 2017-06-09 23:22:03
C/C++
fstream dane;
string nazwa;
int main()
{
    do
    {
        dane.ignore();
        cout << "Z jakiego pliku wczytywac dane?\n";
        cin >> nazwa;
       
        dane.open( nazwa.c_str() );
        if( !dane.good() )
        {
            cout << "Problem z otwarciem pliku " << nazwa << endl;
        }
        else cout << "Plik otwarty.";
       
    } while( !dane.good() );
P-162312
carlosmay
» 2017-06-09 23:39:08
C/C++
#include <iostream>
#include <string>
#include <fstream>

int main()
{
    std::string fileName;
    std::fstream file;
   
    // pobierz nazwę pliku
    while( std::getline( std::cin, fileName ) ) {
        // otwórz plik
        file.open( fileName.c_str(), std::ios::in );
        if( file ) {
            break;
        }
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    }
   
    // pobierz dane z pliku wierszami jako tekst dla testu
    std::string tmp;
    while( std::getline( file, tmp ) ) {
        std::cout << tmp << '\n';
    }
}
P-162313
« 1 »
  Strona 1 z 1