关于STL,对于在什么情况下应该使用哪个容器和算法都感到比较茫然
一、什么是STL,使用STL的好处;
二、STL的string类型的使用方法。
STL的简介:
STL(StandardTemplate Library,标准模板库)
string封装了char*,管理这个字符串,是一个char*型的容器。
string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。
string支持运算。调用Windows的API函数:WideCharToMultiByte()函数和MultiByteToWideChar()函数。
第二种方法
使用ATL的CA2W类与CW2A类。或使用A2W宏与W2A宏。
#include<string>
#include<locale.h>
usingnamespace std;
//wstring转成string
stringws2s(const wstring &ws)
{
stringcurLocale = setlocale(LC_ALL,NULL); //curLocale="C";
setlocale(LC_ALL,"chs");
constwchar_t * _Source=ws.c_str();
size_t_Dsize=2*ws.size()+1;
char* _Dest = new char[_Dsize];
memset(_Dest,0,_Dsize);
wcstombs(_Dest,_Source,_Dsize);
stringresult = _Dest;
delete[]_Dest;
setlocale(LC_ALL,curLocale.c_str());
returnresult;
}
//string转成wstring
wstrings2ws(const string &s)
{
stringcurLocale = setlocale(LC_ALL,NULL); //curLocale = "C"
setlocale(LC_ALL,"chs");
constchar *_Source = s.c_str();
size_t_Dsize = s.size()+1;
wchar_t*_Dest = new wchar_t[_Dsize];
wmemset(_Dest,0,_Dsize);
mbstowcs(_Dest,_Source,_Dsize);
wstringresult = _Dest;
delete[]_Dest;
setlocale(LC_ALL,curLocale.c_str());
returnresult;
}
#ifdef_UNICODE
typedefwstring tstring;
typedefwchar_t tchar;
#define_T(x) L ## x
#else
typedefstring tstring;
typedefchar tchar;
#define_T(x) x
#endif