1樓:
這是ansi 跟unicode編碼的差異造成的
具體的講,vc2010預設的編碼方式是unicode,這種編碼方式對每個字元分配2個位元組,我們稱之為wchar寬字元
而如果是從c語言開始學起,那麼我們定義字元都用char a;這是ansi版本的,這種編碼方式對通常的字母、數字等是1個位元組的,對漢字是2個位元組的。
解決辦法:
在tchar.h中,定義了1種通用的字元型別:tchar
如果編譯器是unicode版本的,tchar被typedef為wchar
如果編譯器是ansi版本的,tchar被typedef為char
而且,很多c語言的庫函式也都有其通用形式,如strcpy()的通用形式為_tcscpy()
另外text巨集可以根據不同版本將字串常量也相應的轉化
所以,在**中,使用tchar 定義字元形變數,使用text巨集處理字串常量,使用庫函式的通用形式,就可以完美解決這個問題,實現1個源**,既可以按unicode編譯,又可以按ansi編譯
vc6.0中在工程--設定--c/c++--前處理器,定義識別符號:unicode,_unicode就可以設定按什麼編碼進行編譯,vc2010我沒設定過,不清楚位置在哪,應該差不多
例如:程式模板應該是這樣的:
#include
tchar sz[50];
tchar *p=text("字串");
_tcscpy(sz,p);
2樓:匿名使用者
const char* 和const wchar_t*是不同型別的指標。char每個字元佔一個位元組,
wchar_t每個字元佔2個位元組,當然就不能用const char* 初始化const wchar_t*了。
3樓:卡么四
wchar_t str[10] = _t("my string");
加 _t 表示unicode寬字元
char *const p;與 const char * p;的區別
4樓:北漂碼農
const char *p;的意思是p指向的目標空間的內容不可變化,char * const p;的意思是指標p的值不可變,但它指向目標的值可變。
1、char * const p : 定義一個指向字元的指標常數,即const指標,其實const 放在p前證明p是一個const,p是不允許改變的。
2、const char* p : 定義一個指向字元常數的指標,const 是c描述char的,char是const,所以指標可變。
擴充套件知識:
char const* p : 等同於const char* p;const char **p是一個指向指標的指標,那個指標又指向一個字串常量,char ** p也是一個指向指標的指標,那個指標又指向一個字串變數。
5樓:匿名使用者
前者定義p為常量,即只能單向賦值一次,p++為p=p+1,重複賦值給常量,出錯,後者p為地址變數,地址變數是指向該變數的儲存地址值如:4b3f6a,不能賦給一個字元值(字元相當於ascii表中對應的整數)如強制賦值,會把原地址變數p變為一個兩位數的整數,造成地址指標溢位。而p++,則表示把該地址變數向下一個儲存單元移動一位,如4b3f6a到4b3f6b.
所以合法。
6樓:漸進_恐慌
const char * p等價於 char const *p ,定義出來的指標可以p++;
char * const 定義出來的指標不可以++;
const 表「只讀」
7樓:匿名使用者
char *const p 修飾指標為常量 指標指向內容可以是變數~既 p++這樣的操作不合法 *p='3' 合法
const char * p 是p指向的內容是常量~p是變數~
~既 p++合法 *p='3' 不合法
找不到vc2019的靜態連結選項(console不是mfc)
控制檯程式不分靜態動態庫 嚴格意義上講都是靜態的 直接都是使用的window標準庫。當然分單 多 除錯 釋出等多個版本。我用的vs2003,不好下結論。你把工程配置修改為多位元組字串試試。v05預設都是wide的。你用depends看看你生成的程式其依賴性了。就是mt那個。不過如果是debug版本要...
C 程式設計問題,VC2019版本關於一堆陣列的問題 高手
include using namespace std void main cout 按由低到高排列以後 endl for int i 0 i lenth i cout ray i cout endl 注意 這句話int ray new int lenth 在這裡我用的指標new空間,相當於是動態分...
vc中釋放動態陣列的問題,vc中釋放動態陣列的問題
我覺得問題不是出在free函式的呼叫上面,而是出在memcpy這個函式的呼叫上面,memcpy函式的呼叫形式如下 memcpy void dest,const void src,size t n 關鍵在於size t n這n上面,樓主在位p分配空間的是用count就已經是位元組數了,而這裡的size...