2014-11-06 61 views

回答

1

您可以通過使用虛擲常量性用力將其轉換: -

Params.pwchFileName = const_cast<wchar_t*>(wide.c_str()); 

但是用const_cast當你有沒有其他選擇。

小心,寫入該對象調用未定義的行爲。

2

從恆定一個,這將是安全的所有情況進行非恆定值的唯一方法是使一個副本:

Params.pwchFileName = new char[wide.size()+1]; 
strcpy(Params.pwchFileName, wide.c_str()); 
... 
// when you are done with the copy, delete it: 
delete[] Params.pwchFileName; 
2

你可以,非常謹慎,使用const_cast

const_cast<wchar_t*>(wide.c_str());

但其他問題在這裏:如果widestd::string那麼c_str()結果僅適用於只要wide是SCOP e並沒有以任何方式改變。即使你符合這一點,那麼PARAMS消費者可以修改字符串緩衝,這將使你未定義行爲

這裏要做的最好的事情是使用strcpy來獲取字符串緩衝區的深層副本,記住一旦完成了緩衝區的設置,就會記住delete