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ố 14 kết quả

Đề tài: Convert WCHAR* sang char* Or char* sang Wchar*

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

    Angry Convert WCHAR* sang char* Or char* sang Wchar*

    P/S hướng dẫn Unicode: http://www.i18nguy.com/unicode/c-unicode.html

    mình chuyển 2 kiểu dữ liệu này chuyên bị lỗi,làm thế nào để khắc phục vậy
    đây là 1 source mình làm tắt cái lỗi của mình,mong các bạn giúp đỡ sửa hộ mình nhé,cảm ơn
    Code:
    #include <iostream>
    #include <Windows.h>
    using namespace std;
    int main()
    {
    	TCHAR s ;
    	lstrcpyA((LPSTR)s,"kfskssdsd");
    	cout<<(char*)s;
    	return 0;
    }
    Các bạn có thể down source đó ở đây
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi Cpro : 20-06-2010 lúc 10:30 AM.

  2. #2
    Ngày gia nhập
    10 2008
    Nơi ở
    Quảng Trị
    Bài viết
    369

    dùng mbstowcs để chuyển char* thành wt_char* (TCHAR*) và wcstombs để làm ngược lại:
    C++ Code:
    1. size_t mbstowcs ( wchar_t * wcstr, const char * mbstr, size_t max );
    2. size_t wcstombs ( char * mbstr, const wchar_t * wcstr, size_t max );

    EDIT: Chú ý: chuyển từ TCHAR sang CHAR có thể làm mất mát dữ liệu
    __________________________________________________ ______
    Edit đợt 2: Nếu bạn muốn in kiểu TCHAR* ra màn hình thì dùng wcout << T"Chu muon hien thi";
    Đã được chỉnh sửa lần cuối bởi nguyenbinh07 : 04-04-2009 lúc 12:08 AM.
    Born to walk against the wind... Born to hear my name...
    Stand and fight... Live by your heart...
    Always one more try... I'm not afraid to die...
    Stand and fight... say what you feel...
    Born with a heart of steel ...

  3. #3
    Ngày gia nhập
    12 2008
    Bài viết
    198

    vẫn không được nè bạn,hihi,bạn giúp mình thêm nhé

    Code:
    #include <iostream>
    #include <Windows.h>
    using namespace std;
    int main()
    {
    	TCHAR s[10] ;
    	char mn[20];
    	lstrcpyA((LPSTR)s,"ks");
    	wcstombs((char*)mn,(const wchar_t*)s,lstrlenA((LPCSTR)s));
    	cout<<mn;
    	return 0;
    }
    Bạn sửa hộ mình với,VS 2008 nhé

  4. #4
    Ngày gia nhập
    10 2008
    Nơi ở
    Quảng Trị
    Bài viết
    369

    C++ Code:
    1. #include <iostream>
    2. #include <Windows.h>
    3. using namespace std;
    4. int main()
    5. {
    6.  
    7.     TCHAR t_tmp* = L"Wide char here!!!";
    8.     wcout << t_tmp;
    9.     return 0;
    10. }

    C++ Code:
    1. #include <iostream>
    2. #include <Windows.h>
    3. using namespace std;
    4. int main()
    5. {
    6.  
    7.      TCHAR t_tmp* = L"Wide char here!!!";
    8.      char t_tmp2[20];
    9.  
    10.      wcstombs(t_tmp2, t_tmp, 20);
    11.     cout << t_tmp2;
    12.     return 0;
    13. }
    Born to walk against the wind... Born to hear my name...
    Stand and fight... Live by your heart...
    Always one more try... I'm not afraid to die...
    Stand and fight... say what you feel...
    Born with a heart of steel ...

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

    Chuyển từ TCHAR* sang char*

    đây là source của cậu
    Code:
    #include <iostream>
    #include <Windows.h>
    using namespace std;
    int main()
    {
    
         TCHAR t_tmp* = L"Wide char here!!!";
         char t_tmp2[20];
    
         wcstombs(t_tmp2, t_tmp, 20);
        cout << t_tmp2;
        return 0;
    }
    nó lỗi mà
    source của mình lỗi
    Code:
    #include <iostream>
    #include <Windows.h>
    using namespace std;
    int main()
    {
    	TCHAR s[10] ;
    	char mn[20];
    	lstrcpyW((LPSTR)s,L"ksrttr");
    	wcstombs((char*)mn,(const wchar_t*)s,lstrlenW((LPCSTR)s));
    	cout<<mn;
    	return 0;
    }
    Đã được chỉnh sửa lần cuối bởi Cpro : 04-04-2009 lúc 12:30 AM.

  6. #6
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Convert WCHAR* sang char* Or char* sang Wchar*

    Nếu là .NET thì dùng như thế này:
    std::cout << CT2A (_T ("Hello, baby"));

    Còn như của bạn thì dùng hàm này để chuyển.
    Visual C++ Code:
    1. void wtoc(char* Dest, TCHAR* Source)
    2. {
    3.         USES_CONVERSION;
    4.         strcpy (Dest, T2A (Source));
    5. }
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  7. #7
    Ngày gia nhập
    10 2008
    Nơi ở
    Quảng Trị
    Bài viết
    369

    Trích dẫn Nguyên bản được gửi bởi Cpro Xem bài viết
    Chuyển từ TCHAR* sang char*

    đây là source của cậu
    C++ Code:
    1. #include <iostream>
    2. #include <Windows.h>
    3. using namespace std;
    4. int main()
    5. {
    6.  
    7.      TCHAR t_tmp* = L"Wide char here!!!";
    8.      char t_tmp2[20];
    9.  
    10.      wcstombs(t_tmp2, t_tmp, 20);
    11.     cout << t_tmp2;
    12.     return 0;
    13. }

    Nó lỗi mà
    Hic do hôm qua khuya quá mắt kèm nhèm nên khai báo dòng:
    C++ Code:
    1. TCHAR t_tmp* = L"Wide char here!!!";
    bị nhầm, hic, sửa lại dấu sao nằm trước chữ t_tmp là đc.

    C++ Code:
    1. TCHAR *t_tmp = L"Wide char here!!!";

    toàn bộ chương trình:
    C++ Code:
    1. #include <iostream>
    2. #include <Windows.h>
    3. using namespace std;
    4. int main()
    5. {
    6.  
    7.      TCHAR *t_tmp = L"Wide char here!!!";
    8.      char t_tmp2[20];
    9.  
    10.      wcstombs(t_tmp2, t_tmp, 20);
    11.     cout << t_tmp2;
    12.     return 0;
    13. }
    Born to walk against the wind... Born to hear my name...
    Stand and fight... Live by your heart...
    Always one more try... I'm not afraid to die...
    Stand and fight... say what you feel...
    Born with a heart of steel ...

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

    Đã TCHAR thì _T("xxx") hết, sao lại dùng lộn xôn L"xxx" với "xxx" trong đây.

  9. #9
    Ngày gia nhập
    03 2009
    Bài viết
    51

    Vậy trong kiểu TCHAR thì mình muốn kiểm tra chuỗi đó rống (tức là không có ký tự nào )thì làm sao?
    Pinging [nguoitoiyeu] with 32bytes of data...
    Request time out...
    Request time out...
    Request time out...
    Ping statistics for [nguoitoiyeu]:
    Packets: Sent =4, Recived =4, Lost =0 (100%)

  10. #10
    Ngày gia nhập
    10 2008
    Nơi ở
    Quảng Trị
    Bài viết
    369

    Có nhiều cách như:
    Visual C++ Code:
    1. TCHAR *szTest = L""; /* Chuỗi rỗng nè :) */
    2.  
    3. if (lstrlen(szTest) == 0) /* Nếu chiều dài là 0 */
    4.     /* Do some things */

    hoặc

    Visual C++ Code:
    1. TCHAR *szTest = L"";
    2.  
    3. if (lstrcmpi(szTest, L"") == 0) /* Nếu  2 chuỗi bằng nhau */
    4.     /* Do some things */

    Hoặc đơn giản là

    Visual C++ Code:
    1. TCHAR *szTest = L"";
    2.  
    3. if (szTest[0] == NULL)
    4.     /* Do some things */
    Born to walk against the wind... Born to hear my name...
    Stand and fight... Live by your heart...
    Always one more try... I'm not afraid to die...
    Stand and fight... say what you feel...
    Born with a heart of steel ...

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

  1. Database Convert từ char sang int như thế nào ?
    Gửi bởi itvnam trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 30-08-2013, 10:46 AM
  2. Cách convert từ char* sang Byte[] trong Winform C++?
    Gửi bởi chuot chui trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 31-05-2012, 06:45 PM
  3. Từ WCHAR* convert sang QString
    Gửi bởi haian trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 1
    Bài viết cuối: 04-01-2012, 11:43 AM
  4. lỗi cannot convert `const char*' to `const WCHAR*' for argument khi dùng autoit với c++
    Gửi bởi morongtraitim88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 03-06-2011, 08:54 PM
  5. Convert char sang int
    Gửi bởi lamhieu01 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: 21-09-2009, 02:13 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