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



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

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

根据名称,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;
}

与其检查你是否在写最后一个元素,不如在每个下一个元素之前写第一个和分隔符:

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

最新更新