2016-01-13 114 views
1

我正在更新一箇舊的Visual Studio項目到VS2013,並繼續遇到問題,它不喜歡我傳遞給strcpy函數的參數。
這是一個Unicode應用程序。
我得到的錯誤 -Strcpy參數不正確

無法從 'CString的' 轉換參數2 '爲const char *'

strcpy(szFileName, m_strFileName); 

m_strFileName被定義爲CString

+0

你用的什麼版本廣https://msdn.microsoft.com/en-us/library/td1esda9.aspx - wcscpy_s –

+0

檢查此[MSDN鏈接](https://msdn.microsoft。 com/en-us/library/awkwbzyc.aspx) – Himanshu

回答

2

strcpy函數只接受char*類型的參數。這就是編譯器錯誤告訴你的 - 你有一個類型不匹配的錯誤。在Windows環境下,char*表示縮小的,即,ANSI)字符串。沒有人再使用它,十多年來一直沒有使用。

你已經知道了;你說你正在構建一個Unicode應用程序,這就是你應該做的。但這意味着你不能再調用窄字符串函數(str*)。你有兩個選擇。或者:

  • 顯式調用 「橫向」(即,Unicode)的的C字符串庫函數,其前綴wcs代替str變體。在這種情況下,您將撥打wcscpy

  • 使用自動映射到C字符串庫函數的正確變體的宏。如果定義了_UNICODE符號(就像它一樣),它們將映射到寬字符串變體;否則,他們映射到窄字符串變體。這些函數(實際上是宏)的前綴都是_tcs。在這種情況下,您可以撥打_tcscpy

+0

「哪個人沒有人再使用,而且已經有十年沒有好了。」你會感到驚訝。 :) –