Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ ลบจำนวนเต็มออกจากสตริงที่คั่นด้วยจุลภาค


สมมติว่าเรามีสตริงที่มีจำนวนเต็มไม่กี่ตัวที่คั่นด้วยเครื่องหมายจุลภาค เราจะต้องแยกมันออกและแสดงจำนวนเต็มแต่ละตัวในบรรทัดที่ต่างกัน ในการทำเช่นนี้เราจะใช้ 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