Я пытаюсь выучить C ++ со вчерашнего дня и использую этот документ: http://www.cplusplus.com/files/tutorial.pdf (стр. 32). Я нашел код в документе и запустил его. Я попытался ввести 5,5 рупий для цены и целое число для количества, и результат был 0. Я попытался ввести 5,5 и 6, и результат был правильным.
// 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;
}
Вопрос: Что именно делает команда mystring? Цитата из документа:
"В этом примере мы получаем числовые значения из стандартного ввода косвенно. Вместо извлечения числовых значений непосредственно из стандартного ввода мы получаем строки из стандартного ввода (cin) в строковый объект (mystr), а затем извлекаем целое число значения из этой строки в переменную типа int (количество) ".
У меня сложилось впечатление, что функция будет принимать неотъемлемую часть строки и использовать ее в качестве входных данных.
(Я точно не знаю, как здесь задать вопрос. Я тоже новичок в программировании) Спасибо.
stringstream
работает. Это странно, возможно, даже плохо =) Но это показывает, что вы можете рассматривать строку как поток.
stringstream
то это определенно неверный пример. И даже если это так, то надо писать иначе.
stringstream
использовался таким образом. Обычно я загружаю строку, конвертирую ее, а затем извлекаю по частям, однако это явно не имеет здесь большого преимущества, потому чтоcin
это уже входной поток ... Такcin >> price >> quantity;
было бы намного проще. Это будет хорошей причиной НЕ использовать учебные материалы cplusplus.com.