Strcpy参数不正确

时间:2016-01-13 16:49:27

标签: c++ visual-c++

我正在将一个较旧的Visual Studio项目更新到VS2013并继续遇到一个问题,它不喜欢我传递给strcpy函数的参数。
 这是一个Unicode应用程序 我收到了错误 -

  

无法从' CString'转换参数2到' const char *'

strcpy(szFileName, m_strFileName);

m_strFileName被定义为CString

1 个答案:

答案 0 :(得分:2)

strcpy函数仅接受char*类型的参数。这就是编译器错误告诉你的 - 你有一个类型不匹配错误。在Windows环境中,char*表示 narrow ,ANSI)字符串。十多年来,没有人再使用,也没有人使用。

你已经知道了;你说你正在构建一个Unicode应用程序,这就是你应该做的。但这意味着您无法再调用窄字符串函数(str*)。你有两个选择。之一:

  • 明确地拨打" wide" (,Unicode)C字符串库函数的变体,以wcs而不是str为前缀。在这种情况下,您可以拨打wcscpy

  • 使用自动映射到C字符串库函数的正确变量的宏。如果定义了_UNICODE符号(就像它一样),它们将映射到宽字符串变体;否则,它们会映射到窄弦变体。这些函数(实际上是宏)都以_tcs为前缀。在这种情况下,您可以拨打_tcscpy