Od wczoraj staram się uczyć C ++ i używam tego dokumentu: http://www.cplusplus.com/files/tutorial.pdf (strona 32). Znalazłem kod w dokumencie i uruchomiłem go. Próbowałem wprowadzić Rs 5,5 dla ceny i liczbę całkowitą dla ilości i na wyjściu było 0. Próbowałem wprowadzić 5,5 i 6 i wyjście było poprawne.
// stringstreams
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
string mystr;
float price = 0;
int quantity = 0;
cout << "Enter price: ";
getline (cin,mystr);
stringstream(mystr) >> price;
cout << "Enter quantity: ";
getline (cin,mystr);
stringstream(mystr) >> quantity;
cout << "Total price: " << price*quantity << endl;
return 0;
}
Pytanie: Co dokładnie robi polecenie mystring? Cytat z dokumentu:
„W tym przykładzie pośrednio pobieramy wartości liczbowe ze standardowego wejścia. Zamiast wyodrębniać wartości liczbowe bezpośrednio ze standardowego wejścia, pobieramy wiersze ze standardowego wejścia (cin) do obiektu łańcuchowego (mystr), a następnie wyodrębniamy liczbę całkowitą wartości z tego ciągu do zmiennej typu int (ilość). "
Odniosłem wrażenie, że funkcja weźmie integralną część łańcucha i użyje jej jako danych wejściowych.
(Nie wiem dokładnie, jak zadać tutaj pytanie. Jestem też nowy w programowaniu) Dziękuję.
stringstream
działa. Jest to dziwaczne, prawdopodobnie nawet złe =) Ale pokazuje, że możesz traktować ciąg jako strumień.
stringstream
to zdecydowanie jest to zły przykład. A nawet jeśli tak, to powinno być inaczej napisane.
stringstream
używany w ten sposób. Zwykle ładuję linię, konwertuję ją, a następnie wyodrębniam na części, jednak ma to oczywiście niewielką zaletę, ponieważcin
jest już strumieniem wejściowym ... Więccin >> price >> quantity;
byłoby o wiele prostsze. To byłby dobry powód, aby NIE używać samouczków cplusplus.com.