Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình C ++ lấy ra số nguyên từ chuỗi được phân tách bằng dấu phẩy

Giả sử chúng ta có một chuỗi trong đó chúng ta có vài số nguyên được phân tách bằng dấu phẩy. Chúng ta sẽ phải tách chúng ra và hiển thị từng số nguyên ở dòng khác nhau. Để làm điều này, chúng ta sẽ sử dụng stringstream (trong thư viện sstream) trong C ++. Đây là một lớp dòng dựa trên chuỗi có trong C ++. Chúng ta có thể sử dụng toán tử trích xuất (<<) để trích xuất một cái gì đó, toán tử chèn (>>) để chèn một cái gì đó và các hàm str () để thiết lập nội dung của đối tượng thiết bị chuỗi bên dưới.

Vì vậy, nếu đầu vào là s =​​"56,9,85,256,47", thì đầu ra sẽ là

56
9
85
256
47

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một mảng take_int (chuỗi str)

    • tạo một đối tượng chuỗi được gọi là ss

    • Xác định một kết quả mảng

    • trong khi mục số nguyên mới được lấy từ ss vào tạm thời không phải là null, hãy thực hiện:

      • chèn tmp vào cuối kết quả

      • bỏ qua ký tự dấu phẩy bằng cách lấy ra ký tự đơn

    • trả về kết quả

  • Từ phương thức chính, thực hiện như sau:

  • Xác định một số nguyên mảng =take_int (s)

  • để khởi tạo i:=0, khi i

    • hiển thị số nguyên [i]

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#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";
}

Đầu vào

56,9,85,256,47

Đầu ra

56
9
85
256
47