ที่นี่เราจะดูวิธีดึงตัวเลขทั้งหมดจากสตริงใน C++ เราสามารถใส่สตริงที่มีตัวเลขและตัวอักษรผสมกันได้ เราจะดึงค่าตัวเลขทั้งหมดออกมา
เพื่อแก้ปัญหานี้ เราจะใช้คลาส stringstream ใน C++ เราจะตัดสตริงทีละคำ แล้วพยายามแปลงเป็นข้อมูลประเภท integer ถ้าแปลงได้ แสดงว่ามันคือตัวเลข ให้พิมพ์ค่าออกมา
Input: สตริงมีตัวเลข "Hello 112 World 35 75" Output: 112 35 75
อัลกอริทึม
ขั้นตอน 1: รับสตริงที่มีตัวเลข ขั้นตอน 2: แบ่งเป็นคำต่างๆ ขั้นตอน 3: ถ้าคำไหนแปลงเป็น integer ได้ ให้พิมพ์ค่า ขั้นตอน 4: จบ
ตัวอย่างโค้ด
#include <iostream>
#include <sstream>
using namespace std;
void getNumberFromString(string s) {
stringstream str_strm;
str_strm << s; // แปลงสตริง s เป็น stringstream
string temp_str;
int temp_int;
while(!str_strm.eof()) {
str_strm >> temp_str; // เอาคำทีละคำใส่ temp_str
if(stringstream(temp_str) >> temp_int) { // ลองแปลงสตริงเป็น int
cout << temp_int << " ";
}
temp_str = ""; // ล้าง temp string
}
}
main() {
string my_str = "Hello 112 World 35 75";
getNumberFromString(my_str);
}
ผลลัพธ์
112 35 75