problem z odczytem pliku przez fstream

0

Witam
(robię na builder c++)
Mam program (nie mój), który generuje plik csv. Jak załaduję ten plik do notepad++ to nie ma ustawionego żadnego formatu. A chciałbym aby był ANSI.
potrzebuję załadować ten plik przez

fstream plikCsv;
plikCsv.open(Sciezka.c_str(), ios::in);

i pobrać z niego informacje.
Jak nie ma określonego formatu to

getline(plikCsv, textLinii);
i pznak=textLinii.substr(0);

pokazuje mi ""
dopiero jak zmienię format pliku w notepad++ na konwertuj do ANSI to mogę pobierać zawartość i jest ok.
Tylko, że muszę pominąć notepada. Czy jest jakiś sposób, żeby dostać się do tej treści?

0

Merytorycznie:
nie ma czegoś takiego jak format ANSI.
Tego co piszesz bez wódki/jointa nie da się czytać. Co palisz? Mocne!

Programowanie (przynajmniej w narzędziach innych niż Borlandy) ma za fundament ścisłe i dokładne określenie sytuacji i celów.
Miałeś już odp w/s kodowania plików, efekt zerowy

0

Ok, wiem, że kodowanie ale chodziło mi o to, że w notepad wchodzę w menu Format.
Ale w dalszym ciągu proszę o informację, jak mogę dostać się do zawartości tego pliku, ponieważ fstream nic nie pokazuje.

0

Otwórz za pomocą "notepad++" i zobacz jakie jest kodowanie.
Dalej będzie z górki

0

@_13th_Dragon: no właśnie ten plik nie ma ustawionego kodowania, a przynajmniej notepad tego nie pokazuje.

1
tuz napisał(a):

Ok, wiem, że kodowanie ale chodziło mi o to, że w notepad wchodzę w menu Format.

Ale w dalszym ciągu proszę o informację, jak mogę dostać się do zawartości tego pliku, ponieważ fstream nic nie pokazuje.

No to może od początku, czy ten plik się otworzył poprawnie? Ścieżka jest poprawna, antywirus niczego nie blokuje?

fstream plikCsv;
plikCsv.open(Sciezka.c_str(), ios::in);
if (plikCsv.is_open()) {
     ...
} else {
     std::perror("plikCsv"); // wypisze błąd do strumienia błędów w czytelnej dla człowieka formie
}
0

@MarekR22: Nie zwraca błędu, niby otwiera plik prawidłowo ale nic mi nie pokazuje. Ustawiłem się na dalszych liniach i cały czas jest pusto. W załączniku jest plik oryginał oraz screen, który pokazuje, że jest ""
chyba, że coś źle robię.
Jednak, gdy w n++ robię konwertuj do formatu ansi to czyta prawidłowo.

marzec2020.zipscreen.jpg

0

@tuz: antywirusa żadnego nie ma, ścieżka na bank prawidłowa.

1

Ten obrazek to chyba pokazuje, że debuger wzeszedł do gałęzi else, czyli jest błąd.
Poza tym:

  1. while (!plik.eof()) jest częstym błędem powinno być:
while (std::getline(plikCsvM, textLinii)) {
  1. textLinii.substr(0); to zaproszenie do "Undefined behavior". Jeśli linia będzie pusta.
0

@MarekR22: nie wszedł do else, tam postawiłem brekpointa ale zatrzymał się niżej, tego nie ma na screenie, chciałem pokazać co wyświetla substr(0);
zaraz sprawdzę te sugestie

1 użytkowników online, w tym zalogowanych: 0, gości: 1