สมมติว่ามีสตริงที่มีจำนวนเต็มคั่นด้วยคอมมา ต้องแยกออกมาแสดงแต่ละจำนวนในบรรทัดต่างกัน ใช้ stringstream (sstream) ใน C++
เช่น s = "56,9,85,256,47" ผลลัพธ์: 56 9 85 256 47
ขั้นตอนการแก้ปัญหา
- ฟังก์ชัน take_int(str):
- สร้าง stringstream ss(str)
- วนลูปอ่าน int tmp จาก ss push_back เข้า result
- ข้ามคอมมาด้วย ss >> ch
- ใน main: เรียก take_int แล้ววนพิมพ์ทุกค่า
ตัวอย่างโค้ด
#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