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

odczytywanie wartości oddzdielonych spacjami

VPS Starter Arubacloud
0 głosów
1,580 wizyt
pytanie zadane 15 kwietnia 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
Jak w c++ odczytać wartość z pliku która jest oddzielona spacjami. Mamy na przykład taki plik:

1 2 3

4 5 7

8 9 0

i chcę wczytać wybraną linię(to wiem jak zrobić), ale nie 1 wartość, tylko wszystkie 3(tablica). W internecie szukałem ale nie znalazłem żadnych satysfakcjonujących mnie przykładów(nie wiem, może coś przeoczyłem). Znalazłem tylko takie jak wczytać wszystkie wartości.

2 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2016 przez Patrycjerz Mędrzec (192,340 p.)
wybrane 16 kwietnia 2016 przez Avernis
 
Najlepsza

Masz dwie możliwości:

  • Wczytywanie pliku, znak po znaku, z równoczesnym kontrolowaniem pozycji wskaźnika
  • Wczytywanie całego wiersza i późniejsze wyciąganie danych z niego

Sądzę, że dla początkującego lepszym rozwiązaniem jest drugi sposób. 

komentarz 15 kwietnia 2016 przez Avernis Nałogowiec (27,400 p.)
Ale właśnie wiem jak wczytać 1 wartość z wiersza, ale nie wiem jak wczytać całya następnie wyciągnąć dane
komentarz 15 kwietnia 2016 przez Patrycjerz Mędrzec (192,340 p.)

Możesz zastosować takie rozwiązanie:

std::fstream plik("plik.txt");

std::string wiersz;
std::string tablica[Y][X];

int y = 0;
int x = 0;

while(getline(plik, wiersz))
{
	for(int i = 0; i < wiersz.length(); i++)
	{
		if(wiersz[i] == ' ')
		{
			x++;
			continue;
		}
		
		tablica[y][x] += wiersz[i];
	}
	x = 0;
	y++;
}

Powyższy kod działa w następujący sposób:

  • Zapisuje każdą daną w tablicy stringów
  • Gdy znajdzie w wierszu znak spacji, to inkrementuje indeks poziomy tablicy (czyli zapisuje nową daną)
  • Po przejściu całej linii przechodzi do nowej, inkrementując uprzednio indeks pionowy

Oczywiście powyższe dane możesz łatwo skonwertować na wartości liczbowe, ale podany algorytm jest uniwersalny. 

komentarz 15 kwietnia 2016 przez Avernis Nałogowiec (27,400 p.)
a mam pytanie, jak mogę skonwertować te 3 liczby z stringa na inta? Bo z tego to co wiem string to łańcuch
komentarz 15 kwietnia 2016 przez Patrycjerz Mędrzec (192,340 p.)

Użyj klasy std::stringstream (sstream) oraz operatorów << i >>.

std::stringstream sstream;
std::string napis = "100";
int liczba;
sstream << napis;
sstream >> liczba;
+1 głos
odpowiedź 15 kwietnia 2016 przez niezalogowany
http://www.wklejto.pl/253224 Musisz dodać tylko sczytywanie konkretnej lini z pliku.
komentarz 15 kwietnia 2016 przez Avernis Nałogowiec (27,400 p.)
Szczytowanie w sensie wybieranie?
komentarz 15 kwietnia 2016 przez niezalogowany
Tak

Podobne pytania

0 głosów
1 odpowiedź 181 wizyt
pytanie zadane 23 października 2020 w C i C++ przez Colossus Mądrala (6,410 p.)
+1 głos
3 odpowiedzi 3,475 wizyt
+1 głos
1 odpowiedź 3,170 wizyt

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 pasjonatów

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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...