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

question-closed C++ Zle rozdziela slowa...

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
430 wizyt
pytanie zadane 21 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
zamknięte 22 stycznia 2017 przez heros22pt

Witam =, mam problem z podanym niżej kodem.. Ma on za zadanie z wczytanego zdania, gdzie słowa są rozdzielone srednikami wczytać po kolei dane do struktur ... Z tym że zamiast wczytać np. . "poland" wczytuje "pola",  a zamiast "audi a3 1.9" wczytuje "audi a"... oraz jeszcze inny problem, ponieważ ostatnia dana jest prędkość i jest napisane np. "130 km/h" i to muszę odczytać tylko do pierwszej napotkanej " " spacji... i tu program się wysypuje.

#include<iostream>
#include<infstr.h>
#include<string>

using namespace std;

struct Car
{
	int year;
	string country;
	string brand;
	int speed; 
};

Car Read_line(string line)
{
	Car temp;
	unsigned long pos = line.find(';');
	temp.year = stoi(line.substr(0, pos));

	pos = line.find(';');
	line = line.substr(pos);
	temp.country = line.substr(0, pos);

	pos = line.find(';');
	line = line.substr(pos + 1);
	temp.brand = line.substr(0, pos);

	pos = line.find(' ');
	line = line.substr(pos + 1);
	temp.speed = stoi(line.substr(0, pos));

	return temp;
}
int main()
{
	string car = "1997;Poland;Audi A3 1.9;193 km/h";
	Car temp = Read_line(car);
	cout << temp.year << endl << temp.country << endl << temp.brand << endl << temp.speed;
	system("pause");
}
komentarz zamknięcia: Problem rozwiązany
komentarz 22 stycznia 2017 przez heros22pt Użytkownik (950 p.)
Car Read_line(string line)
{
	Car temp;
	unsigned long pos = line.find(';');
	temp.year = stoi(line.substr(0, pos));
	line = line.substr(pos + 1);

	pos = line.find(';');
	temp.country = line.substr(0, pos);
	line = line.substr(pos+1);


	pos = line.find(';');
	temp.brand = line.substr(0, pos);
	line = line.substr(pos + 1);


	pos = line.find(' ');
	temp.speed = stoi(line.substr(0, pos));
	line = line.substr(pos + 1);

	return temp;

}

miałem trochę źle ułożony kod, ale już działa, dzięki za pomoc

2 odpowiedzi

+1 głos
odpowiedź 22 stycznia 2017 przez Janusz programowania Bywalec (2,710 p.)
wybrane 22 stycznia 2017 przez heros22pt
+2 głosów
odpowiedź 22 stycznia 2017 przez draghan VIP (106,230 p.)
Proponuję dodać do programu testowe wydruki - wtedy będziesz widział, co dokładnie Twój program robi i będziesz mógł przeciwdziałać błędom. :)

Podpowiem, że głównym mankamentem w Twoim kodzie jest wyszukiwanie odpowiednich średników.

Podobne pytania

0 głosów
2 odpowiedzi 1,126 wizyt
0 głosów
1 odpowiedź 2,025 wizyt
pytanie zadane 20 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
2 odpowiedzi 192 wizyt
pytanie zadane 19 grudnia 2016 w C i C++ przez Don Corleone Obywatel (1,210 p.)

93,439 zapytań

142,431 odpowiedzi

322,677 komentarzy

62,802 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

...