Mam problem z zapisem do pliku csv. Mam zdeklarowaną tablicę 2 wymiarową D[x][y] i chciałbym aby zapis odbywał się w ten sposób kolumna x wiersz y, czyli np. wartość D[2][10] zostanie zapisana do kolumny B wiersz 10 itd. Z jakiej biblioteki i jak to najłatwiej zrobić? Z góry bardzo dziękuję za pomoc!
- Rejestracja:około 3 lata
- Ostatnio:ponad rok
- Postów:2310
wydrukować pazurek, daną, pazurek, przecinek.
w dwóch pętlach
Za trudne ?
Szczerze, to nie pachniesz mi jakbyś cokolwiek w życiu samodzielnie napisał.
- Rejestracja:prawie 6 lat
- Ostatnio:5 dni
- Postów:289
Zacznij od tego, żeby te dane wyswietlić na ekranie w formacie csv.
A potem tylko podmień cout na strumień reprezentujący plik.
Nie kojarzę żadnej biblioteki do zapisu CSV, bo też i żadna nie jest potrzebna, poza biblioteką standardową. Jak piszesz w C++, to jak najbardziej cout
i ofstream
Ci wystarczą — tylko pamiętaj, że CSV to zapis tekstowy, nie binarny.
Jeśli dalej Ci się coś będzie sypać, to możesz się podzielić przykładowym, minimalnym, błędnym kodem, to Cię spróbujemy naprowadzić.
- Rejestracja:około 3 lata
- Ostatnio:ponad rok
- Postów:2310
Bo fprintf mi jakoś nie działa.... — lifo 2023-08-21 23:10
:)
Gratulacje. Nawet nie za umiejętności, ale za praktyczne prowadzące do rozwiązania problemu komunikowanie
No to byś się naprawdę zdziwił. Zastanawiam się po co chcę Ci się pisać cokolwiek co nic nie wnosi, ja wiem jak zapisywać txt czy bin. — lifo 2023-08-21 23:10
Zdziwił bym się, jakbyś napisał sam dwie linijki.

- Rejestracja:ponad 6 lat
- Ostatnio:27 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
Althorion napisał(a):
Nie kojarzę żadnej biblioteki do zapisu CSV, bo też i żadna nie jest potrzebna, poza biblioteką standardową. Jak piszesz w C++, to jak najbardziej
cout
iofstream
Ci wystarczą — tylko pamiętaj, że CSV to zapis tekstowy, nie binarny.Jeśli dalej Ci się coś będzie sypać, to możesz się podzielić przykładowym, minimalnym, błędnym kodem, to Cię spróbujemy naprowadzić.
Eskejpowanie przecinków, eskejpowanie cudzysłowów, eskejpowanie enterów*, coś jeszcze w stringu może rozwalić plik CSV?
Ale faktycznie. Twórcy bibliotek do C++ jacyś dziwny są :P W Javie czy Scali to był standard że każda biblioteka do parsowania CSV umiała też wypisać CSV a tutaj jakby programiści C++ woleli zrobić to sami. Dopiero z dziesiąta biblioteka do parsowania CSV umie też wypisywać
https://arrow.apache.org/docs/cpp/csv.html
KamilAdam napisał(a):
Eskejpowanie przecinków, eskejpowanie cudzysłowów, eskejpowanie enterów*, coś jeszcze w stringu może rozwalić plik CSV?
Wrzucanie stringów na pałę w podwójny cudzysłów obsłuży wszystkie te przypadki. Tak, niewyespace’owany cudzysłów też: patrz punkt 2.6
EDYCJA: no dobra, w praktyce warto wyescape’ować podwójny cudzysłów w stringu. Robi się to umiarkowanie dziwacznie — nie przez backslash , tylko przez podwojenie cudzysłowu: \"
""
. Czyli tak: pierwsze pole, "drugie pole z wyescape’owanym "" cudzysłowem, z przecinkiem też, bo czemu nie", "trzecie pole"

- Rejestracja:około 3 lata
- Ostatnio:ponad rok
- Postów:2310
KamilAdam napisał(a):
Eskejpowanie przecinków, eskejpowanie cudzysłowów, eskejpowanie enterów*, coś jeszcze w stringu może rozwalić plik CSV?
Nasz bardzo precyzyjny OP nie sprecyzował, jakie to są dane. Tablica.
Lata temu byłem doktorantem CSV, na przełomie jak branża schodziła z DOS-a. Bosch ile było dialektów. Że nie wspomnę o samym standardzie kodowania znaków, wszystkie 8bitowe po zyskujacy unikod.
Nie wiem, czy na 2023 jest na to jakieś RFC, ale jest chyba łatwiej.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.