Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Hỏi về string

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    18

    Mặc định Hỏi về string

    Các bạn chỉ dùm mình cái này với.
    Với dạng bài tập tách các khoản trắng ở trong một chuỗi ra thì mình làm bằng cách nào.
    vidu: cchuoi="anh chang dep zai"
    Sau khi xử lí: cchuoi="anhchangdepzai"
    Mình làm mãi mà chẵng được gì cả. Cứ rối tung lên hết.

    Với lại dạng bài tập tìm số lần xuất hiện của một từ trong một chuỗi thì làm thế nào? Mình sử dụng những hàm nào?
    Help me, please!!!
    Đã được chỉnh sửa lần cuối bởi tsandtm : 19-11-2008 lúc 10:24 PM. Lý do: Thiếu nội dung

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Các hàm của string, cái này của C++ n0 mong là hơi giống C
    http://www.cplusplus.com/reference/string/string
    C++ Code:
    1. for(int i=0;i<str.length();i++)
    2.   {
    3.       if(str[i]==' ')
    4.       {
    5.           str.erase (i,1);
    6.       }
    7.   }
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  3. #3
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Bài tách khoảng trắng này cũng dễ thôi có hai cách mình nghĩ ra là :
    -Cách 1:Xử lí trên chính xâu đề bài duyệt từ đầu tới cuối xâu nếu gặp khoảng trắng thì dồn tất cả phần sau của xâu lùi lại một vị trí --> đến khi không còn khoảng trắng là xong .
    -Cách 2ùng một xâu tạm nào đó , duyệt từ đầu xâu đã cho đến cuối xâu nếu gặp kí tự khác rỗng --> cho vào xâu tạm . Cuối cùng gán trở lại xâu tạm vào xâu đã cho là được .
    Còn tìm số lần xuất hiện của một xâu trong một xâu khác thì dùng hàm strstr() trong string.h kết hợp với một số kĩ thuật là được . Hàm này mình đã viết trong bài tìm xâu con xuất hiện nhiều nhất có độ dài dài nhất ở trong room rồi .
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 19-11-2008 lúc 10:45 PM.
    I'm superman

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Code theo cách thứ hai để cắt các khoảng trắng :
    C Code:
    1. #include <string.h>
    2. #include <stdio.h>
    3. #include <conio.h>
    4. #define MAXLENGTH 100
    5. int main() {
    6.     char str[MAXLENGTH],temp[MAXLENGTH];
    7.     int i,count=0;
    8.     printf("Enter a string:");
    9.     gets(str);
    10.     for (i=0;i<strlen(str);++i)
    11.         if (str[i]!=' ')
    12.            temp[count++]=str[i];
    13.     temp[count]='\0';
    14.     strcpy(str,temp);
    15.     printf("String after cut space:");
    16.     puts(str);
    17.     getch();
    18. }
    Tiện post luôn hàm đếm số lần xuất hiện của một xâu trong một xâu khác :
    C Code:
    1. int strcount(char *str,char *sub) {
    2.     int count=0;
    3.     char *ptr;
    4.     while ((ptr=strstr(str,sub))!=NULL) {
    5.         count ++;
    6.         str=ptr+strlen(sub);
    7.     }
    8.     return count;
    9. }
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 19-11-2008 lúc 11:01 PM.
    I'm superman

  5. #5
    Ngày gia nhập
    09 2008
    Bài viết
    28

    Trích dẫn Nguyên bản được gửi bởi tsandtm Xem bài viết
    Các bạn chỉ dùm mình cái này với.
    Với dạng bài tập tách các khoản trắng ở trong một chuỗi ra thì mình làm bằng cách nào.
    vidu: cchuoi="anh chang dep zai"
    Sau khi xử lí: cchuoi="anhchangdepzai"
    Mình làm mãi mà chẵng được gì cả. Cứ rối tung lên hết.

    Với lại dạng bài tập tìm số lần xuất hiện của một từ trong một chuỗi thì làm thế nào? Mình sử dụng những hàm nào?
    Help me, please!!!
    Đây là chương trình để cắt bỏ khoảng trắng trong 1 chuỗi bất kỳ:

    Code:
    #include <iostream>
    using namespace std;
    
    string chuoi_khong_co_khoang_trong(const string& chuoi);
    
    int main()
    {
       string chuoi;
       cout << "Hay nhap vao 1 chuoi bat ky: ";
       getline(cin, chuoi);
       cout << "Chuoi da nhap: " << chuoi << endl;
       cout << "Chuoi moi: " << chuoi_khong_co_khoang_trong(chuoi) << endl;
       return 0;
    }
    
    string chuoi_khong_co_khoang_trong(const string& chuoi)
    {
       string chuoi_tam;
       for (int i=0; i<chuoi.length(); ++i)
       {
          if (!isspace(chuoi.at(i)))
             chuoi_tam += chuoi.at(i);
       }
       return chuoi_tam;
    }

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    18

    Mặc định Hỏi về string

    trung_dk07038 cho mình hỏi tí:
    - Nếu chương trình 1 không có đoạn mã temp[count]='\0'; thì nó sẽ thế nào?
    - Với lại hàm thứ 2 mình không hiểu gì cả.
    + Dòng thứ 4 trả về địa chỉ của chuỗi sub trong str còn dòng thứ 6 nó sẽ làm gì?
    Đã được chỉnh sửa lần cuối bởi tsandtm : 20-11-2008 lúc 07:47 AM. Lý do: Sai nội dung

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Nếu chương trình 1 không có đoạn mã temp[count]='\0'; thì nó sẽ thế nào?
    Cậu viết thử 1 mãng ví dụ :
    char a[] = {'a', 'b', 'c'};
    rồi in ra a thì sẽ hiểu.
    C++ Code:
    1. int strcount(char *str,char *sub) {
    2.     int count=0;
    3.     char *ptr;
    4.     while ((ptr=strstr(str,sub))!=NULL) {
    5.         count ++;
    6.         str=ptr+strlen(sub);
    7.     }
    8.     return count;
    9. }
    Code của trung đoạn gọi strlen( sub ) là không hiểu quả, mỗi lần while lặp nó sẽ gọi hàm strlen(), cậu có thể dùng 1 biến phụ để lưu lại thằng này tránh overhead function call.
    C++ Code:
    1. str=ptr+strlen(sub);
    - str là con trỏ trỏ tới đầu chuỗi :
    - ptr là con trỏ trỏ tới cái từ đó ví dụ :
    Code:
     Tôi học C++
    str ban đầu nó trỏ tới T, khi phép gán xảy ra nó sẽ trỏ tới C vì độ dài của từ học( ví dụ là từ muốn tìm ) là 3.
    Phép cộng con trỏ thôi :
    C Code:
    1. void plus_pointer_demo( char* s )
    2. {
    3.     s = s + 5;
    4.     printf( "%s", s );
    5. }
    6.  
    7. int main()
    8. {
    9.     char s[ 30 ];
    10.     gets( s );
    11.     plus_pointer_demo( s );
    12.  
    13.     return 0;
    14. }

  8. #8
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Ồ đúng rồi cám ơn R2 đã góp ý mình viết chỗ đó hơi gà lưu lại độ dài của sub là xong hì hì lúc Code không nghĩ tới . Thanks .
    C++ Code:
    1. int strcount(char *str,char *sub) {
    2.     int count=0;
    3.     int length=strlen(sub);
    4.     char *ptr;
    5.     while ((ptr=strstr(str,sub))!=NULL) {
    6.         count ++;
    7.         str=ptr+length;
    8.     }
    9.     return count;
    10. }
    I'm superman

Các đề tài tương tự

  1. C++ Tutorial hướng dẫn thao tác string variable.. kiểu dữ liệu string
    Gửi bởi beautifulsoul84hung trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 05-12-2016, 03:20 AM
  2. làm thế nào chuyển String o[] sang String hoặc byte[].
    Gửi bởi zzvanquyenzz trong diễn đàn Thắc mắc lập trình Java
    Trả lời: 1
    Bài viết cuối: 17-06-2013, 09:24 AM
  3. Method String.CompareTo(string strB) trong C# thực hiện so sánh 2 chuỗi như thế nào?
    Gửi bởi tpqnnd trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 27-05-2012, 10:52 AM
  4. Bài tập C++ tạo toán tử ==trong lớp string với tham số là string, char
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-10-2011, 08:56 AM
  5. Lập trình C++ sử dụng string trong C++. Lỗi C2146: syntax error : missing ';' before identifier tại string string_rep()const;?
    Gửi bởi levanvuonglvv trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 15-09-2011, 10:28 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn