【发布时间】:2016-01-06 18:42:16
【问题描述】:
如何使用std::wstring 变量作为swprintf_s 的参数而不是wchar_t *?
我的代码如下但有错误:
#include <string>
#include <iostream>
using namespace std;
int main(){
std::wstring msg(20, 0);
swprintf_s( msg.c_str(), 20, L"This is a test for using std::wstring");//this line has error
wcout<< msg<< endl;
return 0;
}
【问题讨论】:
-
错误(活动)重载函数“swprintf_s”的实例与参数列表不匹配
-
您不能直接执行此操作,因为底层缓冲区并不打算写入。字符串对象中的其他字段不会正确更新(如长度),即使您使用创造性投射强制它会导致稍后出现奇怪的错误。
-
en.cppreference.com/w/cpp/string/basic_string std::wstring::c_str 的签名是“const wchar_t * c_str() const;”这意味着它返回一个“const wchar_t *”,而 swprintf_s 想要一个“wchar_t *”。所以你应该寻找一种不同的方法来做到这一点。
-
这听起来像是一个 XY 问题。你到底想达到什么目的?