ฉันพยายามเรียนรู้ 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
แบบนั้นมาก่อน ฉันมักจะโหลดบรรทัดแปลงแล้วแยกตามส่วนอย่างไรก็ตามสิ่งนี้มีข้อได้เปรียบเล็กน้อยที่นี่เนื่องจากcin
เป็นสตรีมอินพุตอยู่แล้ว ... ดังนั้นcin >> price >> quantity;
จะง่ายกว่ามาก นั่นเป็นเหตุผลที่ดีที่จะไม่ใช้แบบฝึกหัดของ cplusplus.com