簡體   English   中英

將wchar_t轉換為char

[英]Conversion of wchar_t into char

我正在嘗試使用wcstombswchar_t轉換為char 如果僅轉換1個值,則效果很好,但是當轉換多個值時,會產生意外結果。 這些是我要轉換的兩個wchar_t值:

wchar_t szBuf[BUFF_LEN];
wchar_t szBuf1[BUFF_LEN];

並使用wcstombs轉換:

char user[]=""; 
int  length = wcstombs(user,szBuf,250);
char pass[]="";
int  length1 = wcstombs(pass,szBuf1,250);

如果我在szBufaliceszBuf1中有szBuf1pass將給出正確的值,但user將具有aalice123之類的值。 有什么錯誤?

您正在調用Undefined Behaviour,因為您在緩沖區邊界之外進行寫入。 您的user緩沖區和pass緩沖區的長度均為1 (它們是由""的副本初始化的數組)。 因此,您很樂意寫隨機存儲器,任何事情都可能發生。

您的目標緩沖區太小。

char user[] = ""; 等於char user[1] = ""; 這意味着您將寫入未分配的空間,這是未定義的行為 這非常糟糕,因為無法保證會發生什么。

指定目標緩沖區的大小: char user[250] = "";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM