大文字のCに文字列を変換する++

Mike_hunt69:
#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main()
{
    string colour;
    int iNum;
    int iLoop;
    string sTemp;

    sTemp = "";
    iNum = 0;
    iLoop = 0;


    cout << "Input a colour: ";
    cin >> colour;

    if ((colour != "green") && (colour != "yellow") && (colour != "orange") && (colour != "blue") && (colour != "purple") && (colour != "red"))
        {
            cout << "Colour not found" << endl;
        }
    else
        {
            cout << "Input a number";
            cin >> iNum;
        }   


    if ((colour == "blue") || (colour == "red") || (colour == "yellow")) 
        {
            switch (iNum)
                {
                    case 1: 

                        cout << "yellow,orange,red,purple,blue,green" << endl;
                        break;

                    case 2:

                        cout << colour << endl;
                        break;

                    case 3:

                        if (colour == "yellow")
                            {
                                cout << "red" << endl;
                            }        

                        if (colour == "red")
                            {
                                cout << "blue" << endl;
                            }    

                        if (colour == "blue")
                            {
                                cout << "yellow" << endl;
                            }    
                }
        }

    if ((colour == "orange") || (colour == "purple") || (colour == "green"))
        {
            switch (iNum)
                {
                    case 1:
                    {
                        cout << "green,red,purple" << endl;
                        break;
                    }
                    case 2:

                        for (iLoop = 0; iLoop < colour.length(); iLoop++)
                            {
                                sTemp = sTemp + toupper(colour[iLoop]);
                            }

                        cout << sTemp << endl;    
                        break;

                    case 3:

                        if (colour == "green")
                            {
                                cout << "orange" << endl;
                            }

                        if (colour == "orange")
                            {
                                cout << "purple" << endl;
                            }    

                        if (colour == "purple")
                            {
                                cout << "green" << endl;
                            }    

                }
        } 

        return 0;      
}   

私はこのコードを実行している問題を抱えています。私は、次のエラーが表示されます。

color.cpp: In function 'int main()':
color.cpp:79:47: error: no match for 'operator+' (operand types are 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' and 'int')
                                 sTemp = sTemp + toupper(colour[iLoop]);
                                         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~

大文字に色 - 基本的に私は何をしようとしていると、小文字の変数を変換です。私のC ++の知識は非常に限られていると、誰かが文字列をループを実行することと文字で文字を変換せずに大文字に変換文字列に使いやすい方法を提案することができれば、私は非常に感謝しますので、私は初心者ですのでご注意ください。どのような援助をいただければ幸いです。

anastaciu:

toupper(colour)リターンはint、あなたがに(それを連結)を追加することはできませんstring

それが機能するためには、あなたはそれをキャストする必要があります char

sTemp = sTemp + static_cast<char>(toupper(colour[iLoop]));

演算子+は、二つの文字列または文字列と文字を連結します

https://en.cppreference.com/w/cpp/string/basic_string

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=33811&siteId=1