Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 18 kết quả

Đề tài: cách xóa kí tự trống trong chuỗi như thế nào?

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định cách xóa kí tự trống trong chuỗi như thế nào?

    Giả sử ta có chuỗi : "hôm nay chúng ta bỏ học nhé"
    Giờ muốn xóa kí tự trống và lưu vào chuỗi mới , nó thành là "hômnaychúngtabỏhọcnhé" thì làm thế nào ạ

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    PHP Code:
    #include <iostream>
    #include <string>
    #include <ctype.h>

    using namespace std;

    int main(void)
    {
        
    string szSample("Loai ki tu trong");    
        
        for(
    int cnt 0cnt szSample.length(); cnt++)
        {
            if(
    isspace(szSample[cnt])) 
            {
                
    szSample.erase(cnt,1);
            }
        }
        
    cout << " After erasing : " << szSample << endl;
        return 
    0;

    Đã được chỉnh sửa lần cuối bởi Xcross87 : 11-10-2007 lúc 01:27 PM.
    None!

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Một phiên bản khác, ít phụ thuộc vào thư viện của C++ hơn

    Code:
    
    #include <stdio.h>
    #include <iostream>
    using namespace std;
    
    
    char* XoaKiTuTrang (char* soureStr)
    {
    	int len = strlen(soureStr);
    	int j = 0;
    
    	char* temp = new char[len];
    
    	for(int i = 0; i < len; ++i)
    	{
    		if(soureStr[i] != 0x20) // not space character
    		{
    			temp[j] = soureStr[i]; // copy to destination string
    			++j;                        // increase counter
    		}
    	}
    	temp[j] = '\0';  // end string
    	return temp;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char* source = "Loai ki tu trong";
    
    	char* result = XoaKiTuTrang(source);
    
    	cout<< result<< endl;
    
    	return 0;
    }
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 11-10-2007 lúc 12:49 PM.

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    8

    using namespace std;
    dòng này là gì vậy mấy pác?!

  5. #5
    Ngày gia nhập
    11 2006
    Bài viết
    633

    using namespace std;
    std là vùng tên xuất nhập chuẩn, cụ thể ở đây là vùng tên chứa cout và cin.
    Thư viện và vùng tên khác nhau, thư viện là nơi chứa các hàm còn vùng tên chỉ là prototype. Nên khai báo rõ ràng cả thư viện và vùng tên.
    Đã được chỉnh sửa lần cuối bởi huynguyen : 12-10-2007 lúc 04:27 AM.

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định cách xóa kí tự trống trong chuỗi như thế nào?

    Chỉnh sửa lại version xóa space nè :
    PHP Code:
    #include <iostream>
    #include <string>
    #include <algorithm>
    #include <ctype.h>

    using namespace std;

    int main(void)
    {
        
    string szSample("A   lot of         space     ");

        
    szSample.erase(remove_if(szSample.begin(), szSample.end(), isspace), szSample.end());

        
    cout << " After erasing : " << szSample << endl;
        return 
    0;

    None!

  7. #7
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Khi nào các bạn đụng tới optimize thì lúc đó các bạn sẽ hiểu có nên dùng các hàm thư viện có sẵn hay không.
    Trong TQNLib.cpp của tui đã có hàm này, LPSTR StrDelSpaces(LPSTR lpszSrc), và chắc chắn là nó sẽ chạy nhanh hơn code dùng STL functions ở trên 30%.
    Code trên của Pete xóa sạch sẽ các space chars đúng với yêu cầu. Code của Pete chạy đúng
    Hàm StrDelSpaces có thể modify để delete all space char trong 1 string như sau:
    Code:
    /*
     * StrDelAllSpaces: delete all space characters in a string
     */
    LPSTR StrDelAllSpaces(LPSTR lpszSrc)
    {
        int ch;
        LPSTR lpStore = lpszSrc;
        LPSTR lpInc = lpszSrc;
    
        if (!lpszSrc || !*lpszSrc)
            return lpszSrc;
    
        while ((ch = *lpInc++) != '\0')
        {
            if (!isspace(ch))
            {
                *lpStore++ = ch;
            }
        }
    
        *lpStore = '\0';
    
        return lpszSrc;
    }
    Các bạn có thể thấy nó ngắn đi rất nhiều, chạy cực nhanh. Nguyên tắc rất đơn giản: con tro lpStore để store ký tự không phải space vào chính lpszSrc, lpInc là con trỏ duyệt từ đầu tới cuối chuỗi.
    Đã được chỉnh sửa lần cuối bởi TQN : 12-10-2007 lúc 06:31 PM.

  8. #8
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Code:
    /*
     * StrDelAllSpaces: delete all space characters in a string
     */
    LPSTR StrDelAllSpaces(LPSTR lpszSrc)
    {
        int ch;
        LPSTR lpStore = lpszSrc;
        LPSTR lpInc = lpszSrc;
    
        if (!lpszSrc || !*lpszSrc)
            return lpszSrc;
    
        while ((ch = *lpInc++) != '\0')
        {
            if (!isspace(ch))
            {
                *lpStore++ = ch;
            }
        }
    
        *lpStore = '\0';
    
        return lpszSrc;
    }
    anh có thể giải thích cho em cái kí tự gì đó không?...em đọc không hiểu...có thể thay nó bằng char được không

  9. #9
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Thay = char *

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

    làm ơn cho mình hỏi muốn viết 1 chuỗi chuẩn có nghĩa là chuỗi đó có 2 đầu không chứa dấu cách và xen giữa các từ chỉ có 1 dấu cách.các bạn giúp mình với
    Đã được chỉnh sửa lần cuối bởi traingheo : 30-10-2009 lúc 04:23 PM.

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

  1. Xóa dấu trong chuỗi tiếng Việt như thế nào?
    Gửi bởi dien trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 126
    Bài viết cuối: 27-12-2016, 04:19 PM
  2. Xóa dấu cách trong chuỗi như thế nào?
    Gửi bởi adam452 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 21
    Bài viết cuối: 19-12-2011, 07:07 PM
  3. Algorithm Xóa một chuỗi con trong một chuỗi kí tự dài như thế nào ?
    Gửi bởi hu-xeko trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-08-2011, 02:00 PM
  4. Lập trình C làm thế nào dể xóa một phần tử trong 1 chuỗi hoặc 1 mảng
    Gửi bởi nhoccon.uit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 26-12-2010, 10:41 PM
  5. cho 1 chuỗi, tìm 1 từ và xóa từ này trong chuỗi đó nếu tìm thấy
    Gửi bởi trai xu nghe 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: 30-01-2010, 03:32 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