2017-04-06 23 views
1

キャラクターを排除するためにデータポイントの1つを区切る関数を作った。3つの数字にR:G:B:を追加したい。それは定義済みの文字列に文字を追加するにはどうすればよいですか?

255 
0 
0 

なりよりも値が255,0,0ているのであれば例えば、私はそれが

R:255 
G:0 
B:0 

これは私がコンマを分離するために作られた関数であるようにしたいです。

#include string 
    void RGB(string input) 
{ 
    istringstream ssString(input); 

    while (getline(ssString, input, ',')) 
     cout<< input << endl; 


} 
+0

あなたが読んでいる行を追跡し、それに応じてR、GまたはBを追加します。また、あなたの署名に 'const string&input'を使ってみると、不要なコピーを避けるのに役立ちます。 – tadman

+0

あなたの問題は何ですか? – chbchb55

+0

@tadman私はそれをやろうとしましたが、whileループの中でそれらの文字を繰り返しているだけなので、Rをしなければならなかったなら、私はうまくいくでしょうが、すべての反復は異なっていなければなりません。それを実装する。 – Rafael

答えて

1

プレフィックスの配列を反復するだけです。このようなもので十分でしょう。

あなたのコードから行を加算または減算せずにこれを行う方法は次のようになり
const char *prefix[3] = { "R:", "G:", "B:" }; 
for(int p = 0; p < 3 && getline(ssString, input, ','); p++) 
{ 
    cout << prefix[p] << input << endl; 
} 
+0

ありがとうございます。 – Rafael

0

int c = -1; // counter 
    while(std::getline(ssString, input, ',')) 
     std::cout << (++c == 0 ? 'R' : c == 1 ? 'G' : 'B') << ": " << input << std::endl; 
    return 0; 

三項演算子は-1から始まるカウンター変数を利用して、三元は、いくつかの必要性を排除しますifステートメント。注:括弧で囲まれた三項を囲む必要があります。そうしないと、コンパイラによってエラーがスローされます。()

関連する問題