错误:没有运算符“<<”匹配这些操作数

时间:2015-03-30 23:20:27

标签: c++

我在解决这段代码时遇到了麻烦。我已经包括了:

#Include <string>

第一次尝试尝试:

for(int i = 0; i < 15; i++)
    {
        if(i == Scroll)
        {
            Text[i] = "~y~[ " << Text[i] << " ~y~]";
            Text[i].R = 255; Text[i].G = 255; Text[i].B = 0; Text[i].A = 255;
        }
        else
        {
            Text[i].R = 255; Text[i].G = 255; Text[i].B = 255; Text[i].A = 255;
        }
    }

第二次尝试尝试:

for(int i = 0; i < 15; i++)
    {
        if(i == Scroll)
        {
            std::string br1;
            std::string br2;
            br1 = "~y~[ ";
            br2 =  " ~y~]";
            Text[i] = br1 << Text[i] << br2;
            Text[i].R = 255; Text[i].G = 255; Text[i].B = 0; Text[i].A = 255;
        }
        else
        {
            Text[i].R = 255; Text[i].G = 255; Text[i].B = 255; Text[i].A = 255;
        }
    }

他们都没有看到工作,我在&#34;&lt;&lt;&#34;说,&#34;没有操作员&#34;&lt;&lt;&#34;匹配这些操作数&#34;

2 个答案:

答案 0 :(得分:2)

两个问题。

问题#1:如果Text[i] 一个string,您就拥有:

Text[i] = br1 << Text[i] << br2;

<<通常用于流级联或位移等。除非您已经定义了一个,否则<<运算符不会在两边都有string,因此会出错。

你可能意味着:

Text[i] = br1 + Text[i] + br2;

然而,问题#2 Text[i]似乎不是一个字符串,因为你有:

Text[i].R = 255;

等等。因此,如果Text[i]应该是某种字符串,那么您需要将其设为string;如果您尝试生成Text[i]类型的字符串,则需要定义可以执行此操作的函数或运算符。 C ++中的任何内容都没有神奇地将任意类和结构转换为字符串。

答案 1 :(得分:1)

对于串联字符串,请使用+ not&lt;&lt;

Text[i] = "~y~[ " + Text[i] + " ~y~]";