Tôi đang cố gắng học C ++ từ hôm qua và tôi đang sử dụng tài liệu này: http://www.cplusplus.com/files/tutorial.pdf (trang 32). Tôi đã tìm thấy một mã trong tài liệu và tôi đã chạy nó. Tôi đã thử nhập 5,5 Rs cho giá và một số nguyên cho số lượng và đầu ra là 0. Tôi đã thử nhập 5,5 và 6 và đầu ra là chính xác.
// 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;
}
Câu hỏi: Chính xác thì lệnh mystring làm gì? Trích dẫn từ tài liệu:
"Trong ví dụ này, chúng tôi nhận các giá trị số từ đầu vào chuẩn một cách gián tiếp. Thay vì trích xuất các giá trị số trực tiếp từ đầu vào chuẩn, chúng tôi lấy các dòng từ đầu vào chuẩn (cin) thành một đối tượng chuỗi (mystr) và sau đó chúng tôi trích xuất số nguyên các giá trị từ chuỗi này thành một biến kiểu int (số lượng). "
Ấn tượng của tôi là hàm sẽ lấy phần tích hợp của một chuỗi và sử dụng nó làm đầu vào.
(Tôi không biết làm thế nào để đặt một câu hỏi ở đây. Tôi cũng mới học lập trình) Cảm ơn bạn.
stringstream
hoạt động. Nó là một điều kỳ lạ thậm chí có thể là một điều tồi tệ =) Nhưng nó cho thấy bạn có thể coi chuỗi như một luồng.
stringstream
thì chắc chắn đó là một ví dụ sai. Và ngay cả khi nó là như vậy thì nó nên được viết khác đi.
stringstream
được sử dụng theo cách đó. Tôi thường tải dòng, chuyển đổi nó và sau đó trích xuất theo từng phần, tuy nhiên điều này rõ ràng có ít lợi thế ở đây vì đãcin
là một dòng đầu vào rồi ... Vì vậy,cin >> price >> quantity;
sẽ đơn giản hơn nhiều. Đó sẽ là một lý do chính đáng để KHÔNG sử dụng các hướng dẫn của cplusplus.com.