2017-04-06 100 views
1

我做了一个功能,分离我的一个数据点,以消除一个字符。我想将R:G:B:添加到3个数字中。因此,例如,如果值是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计数器变量,三元消除了几个需要如果声明。注意:你必须用括号()包装三元组,否则编译器会向你发出错误。

相关问题