是的,我被殴打了。 无论如何,我都会宣布这个。
编辑:那么,读了Nim的答案之后,我确实达到了OP希望的正确语法。
# include # includestructwith _ separator { with _ separator (STD 33603360 string sep ) : sep (STD 33603: move ) sep )中struct separated _ stream { separated _ stream (STD :3360 ostream stream,std:string sep ) : _ stream } stream else _stream _sep; _ streams TD :3360向前(RHS ); return *this; } separated _stream operator (STD :3360 ostream ) manip (STD :3360 ostream ) ) manip ) _ stream ); return *this; } private : STD : ostream _ stream; std:string _sep; bool _first; (; separated _ stream operator (STD :3360 ostream stream,with_separator wsep ) returnseparated_stream,STD 330 () int mam }
输出:
一二三
简单的回答是,但是,你是自己的…
# include # includeusingnamespacestd; structset _ some _ separator { set _ some _ separator (const char * sep ) :_sep ) }; templates et _ some _ separator operator
是的,cout的格式有点不同。 有点…
虽然不是完全一样:
# include # include # include int main () STD :3360 array data={ 1,2,3 }; STD : ostream _ iterator out (STD : cout,' ); STD :3360复印(data.begin (,data.end ),out ); std:cout 'n '; 返回0; }
简单地解决scheme,也许你可以调整使用
templatevoidmyout(tvalue ) STD : coutvaluestd 3360: endl; }templatevoidmyout(firstfirst,Rest . rest ) STD33603360coutfirst '; myout(rest…); }myout(a )、Hello )、1、2、3、22/7.0 );
ostream_iterator的使用方法
int main () STD:3360vectordata、3、33、45 ); STD :3360副本(STD : begin (data ),STD:3360end )数据),STD33603360Ostream_iterator ) STD 33603360 STD 3: }
使用C 17倍于逗号运算符的expression表达式可以为build创建更好的代码行。
[](auto.xs () ) ) ) ) ),…); (2、3、33、45 );
如果您只是在寻找打印向量元素的方法,但元素分隔符正确,并且末尾没有多余的分隔符,请尝试以下操作:
#include #include int main () STD : vectorv (1,2,3 ); auto it=v.begin (; if(it!=v.end () ) { std:cout *it; 信息技术; (for ); 信息技术!=v.end (; it ) { std:cout ',' *it; }