我有以下代码:
PARAMS Params;
Params.pwchFileName = wide.c_str() ;
但是我得到这个错误:
a value of type "const wchar_t *" cannot be assigned to an entity of type "wchar_t *"
如何进行这项作业?
最佳答案
您可以非常小心地使用const_cast
:const_cast<wchar_t*>( wide.c_str());
但是这里还有其他问题:如果wide
是std::string
,则c_str()
的结果仅在wide
处于范围内且没有任何更改的情况下才有效。即使您符合此要求,PARAMS
的使用者也可以修改字符串缓冲区,这将给您带来不确定的行为。
最好的做法是使用strcpy
来获取字符串缓冲区的深拷贝,并在完成该操作后记得记住该缓冲区的delete
。