vc 2019中const char不能初始化const wchar t,為何

時間 2021-09-03 07:05:17

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' 不合法

計算機二級c語言現在用vc2019,可我買到的教材是vc6 0的,會不會發生衝突呢?或者不同呢

沒有什麼衝突,c語法跟編譯器無關。非要說衝突,那就是不同的編譯器,對於檔案字尾,檔案格式等有要求。不過就2010和6.0來看,應該是一樣的,沒有啥區別。二級階段沒什麼區別 可以用你也可以自己裝乙個vs,然後照著vc的書學,如果有什麼調不通的 基本不會有 再來問 計算機二級c語言選擇題是不是沒辦法用v...

vs2019中開發c 和在vc 6 0中有什麼不同

microsoft visual c 2005 提供了強大和靈活的開發環境,可用於建立基於 microsoft windows 和基於 microsoft net 的應用程式。它既可以用作整合開發系統,也可以用作一組獨立的工具。visual c 包含下列元件 visual c 2005 編譯器工具。...

VC中的含義

表示位域 這是呼叫api全域性函式 setwindowtext hwnd,m strresult 設定hwnd的標題為m strresult,setwindowtext,呼叫系統api 沒有這四個點,則是呼叫mfc中cwnd類的成員方法,格式setwindowtext m strresult 隱含t...