我正在更新一箇舊的Visual Studio項目到VS2013,並繼續遇到問題,它不喜歡我傳遞給strcpy
函數的參數。
這是一個Unicode應用程序。
我得到的錯誤 -Strcpy參數不正確
無法從 'CString的' 轉換參數2 '爲const char *'
strcpy(szFileName, m_strFileName);
m_strFileName
被定義爲CString
。
我正在更新一箇舊的Visual Studio項目到VS2013,並繼續遇到問題,它不喜歡我傳遞給strcpy
函數的參數。
這是一個Unicode應用程序。
我得到的錯誤 -Strcpy參數不正確
無法從 'CString的' 轉換參數2 '爲const char *'
strcpy(szFileName, m_strFileName);
m_strFileName
被定義爲CString
。
strcpy
函數只接受char*
類型的參數。這就是編譯器錯誤告訴你的 - 你有一個類型不匹配的錯誤。在Windows環境下,char*
表示縮小的(,即,ANSI)字符串。沒有人再使用它,十多年來一直沒有使用。
你已經知道了;你說你正在構建一個Unicode應用程序,這就是你應該做的。但這意味着你不能再調用窄字符串函數(str*
)。你有兩個選擇。或者:
顯式調用 「橫向」(即,Unicode)的的C字符串庫函數,其前綴wcs
代替str
變體。在這種情況下,您將撥打wcscpy
。
使用自動映射到C字符串庫函數的正確變體的宏。如果定義了_UNICODE
符號(就像它一樣),它們將映射到寬字符串變體;否則,他們映射到窄字符串變體。這些函數(實際上是宏)的前綴都是_tcs
。在這種情況下,您可以撥打_tcscpy
。
「哪個人沒有人再使用,而且已經有十年沒有好了。」你會感到驚訝。 :) –
你用的什麼版本廣https://msdn.microsoft.com/en-us/library/td1esda9.aspx - wcscpy_s –
檢查此[MSDN鏈接](https://msdn.microsoft。 com/en-us/library/awkwbzyc.aspx) – Himanshu