- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
#include <QVector>
#include <QString>
template< class TYPE>
class call
{
public:
call( TYPE& vl ): value(vl){}
TYPE& value;
};
template< class TYPE>
call<TYPE> all( TYPE& vl )
{ return call<TYPE>(vl); }
template< class TYPE_OUT, class TYPE>
void operator << ( TYPE_OUT& out, call<TYPE>& in )
{
TYPE& value = in.value;
for( TYPE::iterator itr = value.begin() ; itr!=value.end(); itr++)
out << *itr;
}
//**********************************************************************
QVector<int> arr;
QVector<QString> arrStr;
class Cstream{} stream;
void operator << ( Cstream& , const int value)
{
printf("%i\n",value);
}
void operator << ( Cstream& , const QString& value)
{
printf("%s\n",value.toAscii().data());
}
int main(int argc, char *argv[])
{
for( int i=0; i<6;i++)
arr.push_back(i);
arrStr << "asd" << "sadas" << "sadsa";
stream << all(arr);
stream << all(arrStr);
return 0;
}
LispGovno 11.01.2013 20:46 # +1
3.14159265 11.01.2013 20:51 # 0
TarasB 11.01.2013 23:15 # +2
bormand 12.01.2013 08:11 # 0
Конечно, этого бы хватило. Но если это для отладки - то все кутишные контейнеры и так отлично умеют высирать себя в qDebug:
bormand 12.01.2013 08:21 # +1
Понятно, что во всех случаях вектор должен будет высрать все свои элементы. Но из-за того, что между элементов придется пихать различные разделители, и возможно выдать в начале какой-то хидер, обобщение этих джвух строчек просто не имеет смысла.
Dummy00001 12.01.2013 17:43 # 0
http://www.cplusplus.com/reference/iterator/ostream_iterator/
guest 12.01.2013 18:14 # +1
roman-kashitsyn 12.01.2013 00:37 # +4
tirinox 12.01.2013 00:52 # +1