如何获取放入ostream对象的最后一个字符

时间:2012-06-18 05:38:26

标签: c++ iostream

我正在做编程工作,就像这样

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可以回放数据

2 个答案:

答案 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;
    }
}