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 に答える