• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Plik csv map

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
483 wizyt
pytanie zadane 6 listopada 2018 w C i C++ przez inform Nowicjusz (120 p.)

Witam, mam program który ma wyświetlać z pliku csv dane: id, imie,nazwisko. Program kompiluje się, ale nie działa jak powinien. Ktoś może pomóc z tym?

Wyświetla coś takiego:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <iterator>
#include <map>

using namespace std;

int main()
{
    string nazwisko;
    string imie;
    string id;

    map<int,string>::iterator it;
    map<int,string>mapa;

    fstream plik;

    plik.open("plik.csv",ios::in);
    if(plik.good()==true)
    {
        while(!plik.eof())
        {
            getline(plik,id,';');
            getline(plik,imie,';');
            getline(plik,nazwisko,';');

            int numer=atoi(id.c_str());
            mapa.insert(pair<int,string>(numer,imie+ ' ' +nazwisko));

            for(it=mapa.begin(); it != mapa.end(); ++it)
            {
                cout<<'\t'<<it->first<<'\t'<<it->second<<endl;
            }
        }
        plik.close();
    }
    system("PAUSE");
    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 6 listopada 2018 przez criss Mędrzec (172,590 p.)
Nie przeskakujesz znaku nowej linii. Po linii z getlinem wczutujacym nazwisko daj plik.get(); albo plik.seekg(1, ios_base::cur);
komentarz 6 listopada 2018 przez inform Nowicjusz (120 p.)
Teraz pokazuje imie, nazwisko, tylko nie zatrzymuje się program, i dwa razy pokazuje id, coś chyba muszę w kodzie zmienić
komentarz 6 listopada 2018 przez criss Mędrzec (172,590 p.)
wrzuć jeszcze ten csv to ci lepiej pomogę może
komentarz 6 listopada 2018 przez inform Nowicjusz (120 p.)
0 głosów
odpowiedź 6 listopada 2018 przez j23 Mędrzec (195,260 p.)
edycja 6 listopada 2018 przez j23
int main()
{
	const std::streamsize max_strsize = std::numeric_limits<std::streamsize>::max();
	std::map<int, std::string> mapa;
	std::ifstream plik("plik.csv");

	std::string line;

	while(std::getline(plik, line))	
	{
		std::istringstream iss(line);
		std::string nazwisko;
		std::string imie;
		int id;	

		if(iss >> id 
			&& iss.ignore(max_strsize,';')
			&& std::getline(iss, imie, ';')
			&& std::getline(iss, nazwisko, '\n'))
		{
			mapa.insert(std::make_pair(id, imie + ' ' + nazwisko));
		}
		else
		{
			std::clog << "SKIPPING LINE: " << line << '\n';
		}
	}

	for(auto &it : mapa)
	{
		std::cout << '\t' << it.first << '\t' << it.second << '\n';
	}

	system("PAUSE");
	return 0;
}

 

Podobne pytania

+1 głos
1 odpowiedź 355 wizyt
pytanie zadane 16 grudnia 2021 w C# przez disaster Bywalec (2,120 p.)
+1 głos
1 odpowiedź 702 wizyt
pytanie zadane 23 listopada 2021 w SQL, bazy danych przez KonDZIKs Bywalec (2,770 p.)
0 głosów
2 odpowiedzi 1,316 wizyt
pytanie zadane 22 marca 2021 w C# przez disaster Bywalec (2,120 p.)

93,189 zapytań

142,204 odpowiedzi

322,030 komentarzy

62,517 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...