我使用了sprintf(),为什么vc++抱怨_swprintf()?



vc++ 2019通过错误消息拒绝我的语句sprintf(subjectId, "%s", imageInfo->name);:

错误C2664: 'int _swprintf(wchar_t *const,const wchar_t *const,…)':无法将参数1从'char[50]'转换为'wchar_t *const'

其中imageInfo->name类型为char *,subjectId类型为字符数组(char subjectId[50])。

我的vc++字符集配置是"使用Unicode字符集"。但我必须使用窄字符,因为传递给我的消息是窄字符。据我所知,即使在宽字符集的情况下,sprintf()仍然可以使用。另外,我叫了sprintf(),为什么它抱怨_swprintf()呢?

如果选择" Use Unicode Character set ",它将使用Unicode字符集。c风格的字符串现在保存在TCHAR中(与WCHAR相同,与wchar_t相同),而不是char

如果你不想要这些转换,就不要要求它们。

您可以在Microsoft页面上找到有关Unicode和多字节字符集支持的更多信息。

最新更新