Announcement

Collapse
No announcement yet.

Tách chuỗi thành các từ riêng lẽ?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Tách chuỗi thành các từ riêng lẽ?

    Chào mọi người! em đang cần giúp đỡ!
    Để tách chuỗi kiểu string thành các từ riêng lẽ rồi lưu vào vector , em làm như sau:
    void TachChuoiThanhTu(vector<string> a, string s)
    {
    int i, j;
    int k=0;
    for (int i = 0; i < s.length()
    {
    j = s.find(' ', i);
    if (i < j)
    {
    a[k] = s.substr(i, j);
    k++;
    }
    i = j + 1;
    }
    }
    Quá trình build chương trình không có lỗi, tuy nhiên lúc chạy thì xảy ra lỗi như hình, mọi người giúp em cách khắc phục với! thanksUntitled.png

  • #2
    Originally posted by 14520065 View Post
    Chào mọi người! em đang cần giúp đỡ!
    Để tách chuỗi kiểu string thành các từ riêng lẽ rồi lưu vào vector , em làm như sau:
    void TachChuoiThanhTu(vector<string> a, string s)
    {
    int i, j;
    int k=0;
    for (int i = 0; i < s.length()
    {
    j = s.find(' ', i);
    if (i < j)
    {
    a[k] = s.substr(i, j);
    k++;
    }
    i = j + 1;
    }
    }
    Quá trình build chương trình không có lỗi, tuy nhiên lúc chạy thì xảy ra lỗi như hình, mọi người giúp em cách khắc phục với! thanks[ATTACH=CONFIG]16409[/ATTACH]
    Code trên của em bị lỗi vì chạy quá giới hạn chỉ số của string.
    Để tách chữ ta có thể làm nhiều cách như sử dụng stringstream , hàm strtok trong thư viện string.h. Thư viện string (STL) cũng có thể tách chữ dựa trên các hàm có sẵn là hàm find (tìm kiếm một chuỗi ký tự xuất hiện trong string ), hàm substr (Lấy một chuỗi ra khỏi string) và hàm erase (xóa một chuỗi con trong string).
    Ý tưởng:
    B1: Tìm vị trí của ký tự khoảng cách (Ký tự giữa 2 chữ) trong chuỗi. Sau đó tách một chuỗi con từ đầu string cho tới vị trí của khoảng trắng vừa tìm ta sẽ được một chữ đầu tiên trong chuỗi.
    B2: Xóa chuỗi con từ đầu cho tới vị trí cần của khoảng trắng vừa tìm đc ( Cập nhật lại chuỗi ).
    B3: Lặp lại 2 bước trên cho tới khi chuỗi trống.

    CODE:
    PHP Code:
    #include <iostream>
    #include <math.h>
    #include <string>
    #include <vector>

    using namespace std;

    int main()
    {
        
    vector<stringSS//Vector of string
        
    string Str "I love you.";
        while (!
    Str.empty())
        {
            
    SS.push_back(Str.substr(0Str.find(" ")));// add word to vector
            
    if (Str.find(" ") > Str.size()) //Check if found " " (Space)
            
    {
                break;
            }
            else
            {
                
    Str.erase(0Str.find(" ") + 1); // Update string
            
    }
        }
        for (
    int i 0SS.size(); i++)
        {
            
    cout << SS[i] << endl;
        }
        
    system("pause");
        return 
    0;

    Kết quả: 2015-04-10_225647.png

    Còn nhiều cách làm khác tiện hơn nữa. Chúc e thành công !

    Comment


    • #3
      Cảm ơn anh nhiều nhé!!!

      Comment

      LHQC

      Collapse
      Working...
      X