zapis do pliku csv

zapis do pliku csv
LI
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad rok
0

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!

edytowany 1x, ostatnio: lifo
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
2

@lifo:

wydrukować pazurek, daną, pazurek, przecinek.
w dwóch pętlach
Za trudne ?

Szczerze, to nie pachniesz mi jakbyś cokolwiek w życiu samodzielnie napisał.


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 1x, ostatnio: ZrobieDobrze
LI
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. Pytam o csv dwie linijki kodu z przykładem wystarczą. Bo fprintf mi jakoś nie działa....
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:5 dni
  • Postów:289
1

Zacznij od tego, żeby te dane wyswietlić na ekranie w formacie csv.

A potem tylko podmień cout na strumień reprezentujący plik.

LI
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad rok
0

Ja wiem jak się zapisuje, pętle itd. chodzi mi o jakiś przykład oraz najlepszą bibliotekę dla csv- cały czas operuję na fprintf dla txt lub poprzez ofstream dla bin ale w ten sposób csv coś się sypie :(

Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około godziny
  • Postów:1605
1

Nie kojarzę żadnej biblioteki do zapisu CSV, bo też i żadna nie jest potrzebna, poza biblioteką standardową. Jak piszesz w C++, to jak najbardziej coutofstream 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ć.

ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0

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.


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
LI
masz naprawdę wielkie kompleksy, nie chcesz (albo nie umiesz) pomóc to nic lepiej nie pisz.
ZD
Minęło więcej niz 48h, gdybyś wtedy zaczął, dawno byś miał zrobione
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:27 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
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 coutofstream 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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 3x, ostatnio: KamilAdam
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około godziny
  • Postów:1605
1
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"

edytowany 4x, ostatnio: Althorion
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0
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.


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl

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.