stringstream与string

1.stringstream的<<  >> 操作符可以直接操作字符串或数值

如:

#ifdef _UNICODE
typedef std::wstring tstring;
typedef std::wstringstream tstringstream;
#else
typedef std::string tstring;
typedef std::stringstream tstringstream;

#endif


                    int num = 2;
                    tstring strNum;
                    tstringstream stream;
                    stream << num;
                    stream >> strNum;
                   
                    tstring strCHN = _T("汉字");
                    tstring strCHNN;
                    tstringstream strm;
                    strm << strCHN;
                    strm >> strCHNN;

2.>>操作符自动以空格作为截断,所以>>不适合用于输入一个带有空格的字符串,应该使用如下方法:

  stringstream ss;

  string  strSql =  ss.str();

或者使用getline函数

3.当多次使用同一个stringstream时,需要清空缓存

stringstream ss;

错误用法

ss.clear(); //实际上,它并不清空任何内容,它只是重置了流的状态标志而已!

正确用法

ss.str("");   


4.CString *pStr = new CString("aa");

正确的用法是:ss << LPCTSTR(*pStr);

错误的用法:ss << pStr; ss << *pStr。

5. ostream重载<< 64位无符号整数


std::ostream& operator << (std::ostream& strm, const unsigned __int64 value)
{
    char buf[128] = {0};
    
    _ui64toa(value, buf, 10);
    
    strm << buf;
    
    return strm;
}



你可能感兴趣的:(基础c/c++,字符(串),编码)