VS2010版本的C++新增了C++11特性,对原有的C++标准库扩展,融合BOOST库等三方库
1.关键字
auto自动类型推倒
auto i = 1;
decltype变量类型推倒
decltype(i) j = 1;
nullptr空指针
nullptr新类型,避免NULL=0的二义性
override虚函数必须重写、final虚函数不能重写
virtual void function() override {}
2.Lamdas表达式
[]:外部变量作用域
():传入参数
->类型:返回值类型
无参函数:[]{},有参函数[](int a)->int {}
3.for循环
for(auto i: array)
4.右值引用
左值:有名称对象,如变量------------>左值引用&
右值:无名称对象,如具体数值----------------->右值引用&&
5.智能指针
auto_ptr:不能指向stl容器
6.BOOST串行化
ifstream、sstream类似方式的对象数据保存,可以以xml或二进制方式保存----------------boost::archive
7.线程
std::thread join等待 detach主线程不等待和清理子线程
同步对象:std::mutex、std::lock_guard、std::unique_lock
8.Unicode
namespace StrConvert {
// string的编码方式为utf8,则采用:
std::string wstring2utf8string(const std::wstring& str)
{
static std::wstring_convert<std::codecvt_utf8<wchar_t> > strCnv;
return strCnv.to_bytes(str);
}
std::wstring utf8string2wstring(const std::string& str)
{
static std::wstring_convert< std::codecvt_utf8<wchar_t> > strCnv;
return strCnv.from_bytes(str);
}
// string的编码方式为除utf8外的其它编码方式,可采用:
std::string wstring2string(const std::wstring& str, const std::string& locale)//locale = "chs"或"zh-cn"
{
typedef std::codecvt_byname<wchar_t, char, std::mbstate_t> F;
static std::wstring_convert<F> strCnv(new F(locale));
return strCnv.to_bytes(str);
}
std::wstring string2wstring(const std::string& str, const std::string& locale)
{
typedef std::codecvt_byname<wchar_t, char, std::mbstate_t> F;
static std::wstring_convert<F> strCnv(new F(locale));
return strCnv.from_bytes(str);
}
}