我知道 SO 上已经有一个类似标题的问题,但我想知道我对这个特定案例的选择。
MSVC 编译器给出关于 strcpy 的警告:
1>c:\something\mycontrol.cpp(65): warning C4996: 'strcpy': This function or
variable may be unsafe. Consider using strcpy_s instead. To disable
deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
这是我的代码:
void MyControl::SetFontFace(const char *faceName)
{
LOGFONT lf;
CFont *currentFont = GetFont();
currentFont->GetLogFont(&lf);
strcpy(lf.lfFaceName, faceName); <--- offending line
font_.DeleteObject();
// Create the font.
font_.CreateFontIndirect(&lf);
// Use the font to paint a control.
SetFont(&font_);
}
注意font_
是一个实例变量。LOGFONT
是一个窗口结构,其中lfFaceName
定义为TCHAR lfFaceName[LF_FACESIZE]
。
我想知道的是我可以做类似以下的事情(如果不是为什么不这样做):
void MyControl::SetFontFace(const std::string& faceName)
...
lf.lfFaceName = faceName.c_str();
...
或者,如果有完全不同的选择,请告诉我。