Я намагаюся вивчити C ++ з вчорашнього дня і використовую цей документ: http://www.cplusplus.com/files/tutorial.pdf (стор. 32). Я знайшов код у документі і запустив його. Я спробував ввести Rs 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.