使用wstring for swprintf_s而不是wchar_t *

时间:2016-01-06 18:42:17

标签: c++ wstring

如何将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;
}

1 个答案:

答案 0 :(得分:0)

swprintfswprintf_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)