0

我在做编程工作,是这样的

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

4

2 回答 2

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;
}
于 2012-06-18T05:56:09.150 回答
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;
    }
}
于 2012-06-18T05:56:24.123 回答