Tách Chuỗi Thành Các Từ Riêng Lẽ? - UIT - Forum

  • Login or Sign Up
    • Logging in... Remember me Log in Forgot password or user name? or Sign Up
    • Log in with
  • If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Announcement Collapse No announcement yet. Tách chuỗi thành các từ riêng lẽ? Collapse X Collapse
  • Posts
  • Latest Activity
  • Photos
  • Search
  • Page of 1
  • Filter
  • Time All Time Today Last Week Last Month
  • Show All Discussions only Photos only Videos only Links only Polls only Events only
Filtered by: Clear All new posts Previous template Next
  • 14520065 14520065 Vũ Thái Bảo
    • Join Date: Aug 2014
    • Posts: 37
    • Share
    • Tweet
    #1

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

    10-04-2015, 22:06 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 Tags: chuỗi, tách từ
  • 12520332 12520332 Cáp Hữu Quân
    • Join Date: Aug 2012
    • Posts: 229
    • Share
    • Tweet
    #2 10-04-2015, 23:00 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<string> SS; //Vector of string string Str = "I love you."; while (!Str.empty()) { SS.push_back(Str.substr(0, Str.find(" ")));// add word to vector if (Str.find(" ") > Str.size()) //Check if found " " (Space) { break; } else { Str.erase(0, Str.find(" ") + 1); // Update string } } for (int i = 0; i < SS.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

    Post Cancel
  • 14520065 14520065 Vũ Thái Bảo
    • Join Date: Aug 2014
    • Posts: 37
    • Share
    • Tweet
    #3 10-04-2015, 23:38 Cảm ơn anh nhiều nhé!!!

    Comment

    Post Cancel
Previous template Next LHQC Collapse Viec lam Thuc tap Thông tin quảng cáo Thông tin quảng cáo Powered by vBulletin® Version 5.7.4 Copyright © 2024 MH Sub I, LLC dba vBulletin. All rights reserved. All times are GMT+7. This page was generated at 00:10. Working... Yes No OK OK Cancel X

Từ khóa » Hàm Tách Chuỗi C++