สมมติว่าเรามีสตริงที่มีจำนวนเต็มไม่กี่ตัวที่คั่นด้วยเครื่องหมายจุลภาค เราจะต้องแยกมันออกและแสดงจำนวนเต็มแต่ละตัวในบรรทัดที่ต่างกัน ในการทำเช่นนี้เราจะใช้ stringstream (ภายใต้ไลบรารี sstream) ใน C++ นี่คือคลาสสตรีมที่ใช้สตริงหนึ่งรายการใน C ++ เราสามารถใช้ตัวดำเนินการแยก (<<) เพื่อแยกบางสิ่ง ตัวดำเนินการแทรก (>>) เพื่อแทรกบางสิ่ง และฟังก์ชัน str() เพื่อตั้งค่าเนื้อหาของวัตถุอุปกรณ์สตริงพื้นฐาน
ดังนั้น หากอินพุตเป็น s ="56,9,85,256,47" ผลลัพธ์จะเป็น
56 9 85 256 47
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดอาร์เรย์ take_int(string str)
-
สร้างวัตถุสตริงสตรีมที่เรียกว่า ss
-
กำหนดผลลัพธ์อาร์เรย์
-
ในขณะที่รายการจำนวนเต็มใหม่ที่นำมาจาก ss เป็น temp ไม่เป็นค่าว่างให้ทำ:
-
แทรก tmp ที่ส่วนท้ายของผลลัพธ์
-
ข้ามอักขระลูกน้ำโดยนำอักขระตัวเดียวออก
-
-
ส่งคืนผลลัพธ์
-
-
จากวิธีหลัก ให้ทำดังนี้:
-
กำหนดจำนวนเต็มอาร์เรย์ =take_int(s)
-
สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของจำนวนเต็ม ให้อัปเดต (เพิ่ม i ขึ้น 1) ให้ทำ:
-
แสดงจำนวนเต็ม[i]
-
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <iostream> #include <sstream> #include <vector> using namespace std; vector<int> take_int(string str) { stringstream ss(str); vector<int> result; char ch; int tmp; while(ss >> tmp) { result.push_back(tmp); ss >> ch; } return result; } int main(){ string s = "56,9,85,256,47"; vector<int> integers = take_int(s); for(int i = 0; i < integers.size(); i++) cout << integers[i] << "\n"; }
อินพุต
56,9,85,256,47
ผลลัพธ์
56 9 85 256 47