vc6.0转vs2005中字符串的问题
生活随笔
收集整理的這篇文章主要介紹了
vc6.0转vs2005中字符串的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡單一點:就是project->Property->Configuration?Property-->general-->Character?Set:No?Set即可。詳細分析見下面:?
C++中的字符類型:Wchar,char,其中Wchar是寬字符,即Unicode,每個字符都是兩個字節。char類型就是一般的ASCII碼,另外的多字節編碼與此類似(MBCS)。但是W與A這兩種類型是截然不同的,為了書寫的統一,定義了一種Tchar的類型,這種類型在你程序編譯為Unicode是,就是Wchar類型,反之為char類型。
_T("")就是這種類型,L“”,就是指Wchar,什么都沒有就是char類型。
對于GetLength()而言,其Unicode的話,得到是字符數,不是字節數。對于ASCII碼而言是字節數。
對于預定義的不同,#define?Unicode?的情況下是TEXT(""),而vs2005中貌似是預定義_Unicode,因此式_T("")。
對于LPCTSTR中的T就是TEXT或者_T的意思,C指的是常數。
對于W,A,T之間的轉換,(A指的就是ASCII碼)有專門的宏:
W2T("",""),W2CT等。
MultiByteToWideChar函數也可以用來轉換。
為了簡單意見,編譯設置的時候統統采用no?set,即不采用unicode編碼,這樣vs2005就能直接使用vc6.0了,因為vc6.0默認是ASCII的,而vs2005默認是unicode的,所以需要改變。
C++中的字符類型:Wchar,char,其中Wchar是寬字符,即Unicode,每個字符都是兩個字節。char類型就是一般的ASCII碼,另外的多字節編碼與此類似(MBCS)。但是W與A這兩種類型是截然不同的,為了書寫的統一,定義了一種Tchar的類型,這種類型在你程序編譯為Unicode是,就是Wchar類型,反之為char類型。
_T("")就是這種類型,L“”,就是指Wchar,什么都沒有就是char類型。
對于GetLength()而言,其Unicode的話,得到是字符數,不是字節數。對于ASCII碼而言是字節數。
對于預定義的不同,#define?Unicode?的情況下是TEXT(""),而vs2005中貌似是預定義_Unicode,因此式_T("")。
對于LPCTSTR中的T就是TEXT或者_T的意思,C指的是常數。
對于W,A,T之間的轉換,(A指的就是ASCII碼)有專門的宏:
W2T("",""),W2CT等。
MultiByteToWideChar函數也可以用來轉換。
為了簡單意見,編譯設置的時候統統采用no?set,即不采用unicode編碼,這樣vs2005就能直接使用vc6.0了,因為vc6.0默認是ASCII的,而vs2005默認是unicode的,所以需要改變。
轉載于:https://www.cnblogs.com/mao0504/p/5922566.html
總結
以上是生活随笔為你收集整理的vc6.0转vs2005中字符串的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Filter 字符编码Filter 一
- 下一篇: springmvc中@PathVaria