如何将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;
}
答案 0 :(得分:0)
swprintf
或swprintf_s
写入其第一个参数指向的内存。因此该参数不能是const
char或wchar指针。但是std :: wstring :: c_str()的返回值是const char*
。所以你不能只是强迫const
。正如Jason所提到的,如果你违反规则,wstring :: size()可能不会返回正确的值。
你能做的是
wchar_t * buffer[20];
swprintf_s(buffer, 20, L"This is a test for using std::wstring");
如果你想要一个std :: wstring,你可以使用构造函数,比如wstring msg(buffer)
。