我想连接一个std::string和WCHAR*,结果应该是WCHAR*。
我尝试了以下代码
size_t needed = ::mbstowcs(NULL,&input[0],input.length());
std::wstring output;
output.resize(needed);
::mbstowcs(&output[0],&input[0],input.length());
const wchar_t wchar1 = output.c_str();
const wchar_t * ptr=wcsncat( wchar1, L" program", 3 );我有以下错误
error C2220:作为错误-无“对象”文件生成的警告 错误C2664:“wcsncat”:无法将参数1从“const wchar_t *”转换为“wchar_t*”
发布于 2013-03-01 05:32:42
如果您调用string.c_str()获取原始缓冲区,它将返回一个const指针,以指示您不应该尝试更改缓冲区。当然,你不应该试图把任何东西连在一起。使用第二个string类实例,让运行时为您完成大部分工作。
std::string input; // initialized elsewhere
std::wstring output;
output = std::wstring(input.begin(), input.end());
output = output + std::wstring(L" program"); // or output += L" program";
const wchar_t *ptr = output.c_str();还记得这个。一旦“输出”超出范围并破坏,"ptr“将无效。
发布于 2013-03-01 05:33:28
正如文件上说的
wchar_t * wcsncat ( wchar_t *目的,wchar_t * source,size_t num );将源的第一个num宽字符附加到目标,再加上一个终止空宽字符。返回目的地。(资料来源:http://www.cplusplus.com/reference/cwchar/wcsncat/)
您不能将您的const wchar1作为目标传递,因为函数将修改它,然后返回它。所以你最好
但是,我想知道您是否不能仅仅使用字符串来执行您的操作,这更像是C++的操作方式。(数组是C风格的)
https://stackoverflow.com/questions/15150946
复制相似问题