我正在做编程工作,就像这样
vector<Member> members;
stringstream ss;
stringstream ss1;
for (vector<Member>::iterator it = members.begin; it != members.end(); it++){
ss << it->name << ",";
if (check(it->id)){
ss1 << it->name << ",";
}
}
所以,最后,会有一个我不需要的“,”我想从ss中获取,如何做到这一点,我知道我可以使用一些变量来控制它,但是我认为直接操纵ss会更方便
有些朋友在这里提供的方法无法处理ss1的情况,如何控制ss1的“,”。
并且有人可以告诉我为什么ostream不能回馈任何数据但istream可以回放数据
答案 0 :(得分:1)
ostream按名称是输出流:它不是为了回馈任何数据而设计的。
然而,即使它确实如此,使用简单的条件你的代码也会更清晰:
vector<Member> members;
stringstream ss;
for (vector<Member>::iterator it = members.begin(); it != members.end(); it++) {
if (it != members.begin()) ss << ", ";
ss << it->name;
}
答案 1 :(得分:0)
您可以在每个下一个元素之前编写第一个元素和分隔符,而不是检查您是否正在编写最后一个元素:
vector<Member> members;
stringstream ss;
vector<Member>::iterator it = members.begin;
if(it != members.end()){
ss << it->name;
for (it++; it != members.end(); it++){
ss << ", " << it->name;
}
}