Windows 代码移植到Linux 遇到的问题总结

std::min 接口的问题

std::min 调用要求参数类型统一

  1. std::min 接口 注意参数的类型统一。

ifstream 、ofstream 传wchar_t* 宽字符文件名

ifstream 或ofstream 传wchar_t*宽字符文件名路径,windows正常,linux编译报错。原因是linux下没有重载相应的方法。

解决的办法是先将wchar_t 转成wstring, 再利用wcstombs 转成string来调用。

void ICommonHandle::FeatureLoad(const wchar_t* strFileName, bool bVerify)
{
    _CheckException( __FILE__, __LINE__, __FUNCTION__);
    
    //获取配置文件中的流
	std::wstring w_str(strFileName);
	unsigned len = w_str.size() * 4 + 1;
	setlocale(LC_CTYPE, "en_US.UTF-8");
	std::unique_ptr p(new char[len]);
	wcstombs(p.get(), w_str.c_str(), len);
	std::string str(p.get());

    ifstream objStream(str);
}

你可能感兴趣的:(Window,移植问题)