C++中的模板类

lun*_*una 5 c++ templates tostring

以下C++模板类的功能是什么?我是逐行注释的:

template<class T> string toString(const T& t, bool *ok = NULL) {
         ostringstream stream;
         stream << t;
         if(ok != NULL) *ok = stream.fail() == false;
         return stream.str();
}
Run Code Online (Sandbox Code Playgroud)

这是Java的toString()方法吗?

Jam*_*ran 8

基本上,它会将任何具有operator <<的输出对象定义为流,并将其转换为字符串.(可选)如果您传递bool变量的地址,它将根据转换是否成功来设置.

这个函数的优点是,一旦定义了,只要你为你编写的新类定义了operator <<,你也可以立即得到一个toString()方法.

 template<class T> 
 string toString(const T& t, bool *ok = NULL) 
 { 
         ostringstream stream;     // line A
         stream << t;              // line B
         if(ok != NULL) 
               *ok = (stream.fail() == false);  // line C
         return stream.str();      // Line D
} 
Run Code Online (Sandbox Code Playgroud)
  • A - 声明一个ostringstream - 一个写入字符串的输出流
  • B - 使用它的运算符<<将对象写入该流
  • C - 将*ok布尔值设置为成功/失败
  • D - 将流转换为标准字符串并返回.