const char и ошибки двоичного оператора

Перво-наперво: я знаю, что этот код слишком длинный и может быть несколько сокращен. Тем не менее, я не хочу помогать с сокращением, я просто пытаюсь понять некоторые основы, и моя проблема сейчас заключается в операторах и хранении значений. Как вы, вероятно, можете видеть из кода, я пытаюсь использовать кучу операторов if для хранения определенных значений в переменных, а затем отображать эти значения вместе в строке в конце. Компилятору не нравится мой код, и он выдает мне кучу ошибок, связанных с оператором.

#include <iostream>
#include <string>

using namespace std;

int main()
{
string type = "";
string color = "";
string invTypeCode = "";
string invColorCode = "";
string fullCode = "";

cout << "Use this program to determine inventory code of furniture.";
cout << "Enter type of furniture: ";
cin >> type;

if (type.length() == 1)
{
if (type == "1" or "2")
{
if (type == "1")
{
invTypeCode = "T47" << endl;
}
if (type == "2")
{
invTypeCode = "C47" << endl;
}
else
cout << "Invalid inventory code." << endl;
}}

else
cout << "Invalid inventory code." << endl;

cout << "Enter color code of furniture: ";
cin >> color;

if (color.length() == 1)
{
if (color == "1" or "2" or "3")
{
if (color == "1")
{
invColorCode = "41" << endl;
}
if (type == "2")
{
invColorCode = "25" << endl;
}
if (type == "3")
{
invColorCode = "30" << endl;
}
else
cout << "Invalid inventory code." << endl;
}}

else
cout << "Invalid inventory code." << endl;

fullCode = invTypeCode + invColorCode;
cout << fullcode << endl;

system("pause");
return 0;
}

0

Решение

Похоже, вы не используете потоки ввода и вывода должным образом. Например:

         invTypeCode = "T47" << endl;

Обычно, если вы используете endl и <<левая сторона для << оператор является std :: ostream. В этом случае lhs — это строка, поэтому компилятор жалуется. В этом случае, я думаю, вы действительно хотите заменить «T47» на «T47 \ n» и удалить «<< епсИ».

Вы также ошиблись в последней ссылке на «полный код»; это должен быть «fullCode» с заглавной буквы «C». C ++ чувствителен к регистру.

3

Другие решения

if (color == "1" or "2" or "3")

должно быть

if (color == "1" or color == "2" or color == "3")

или если вы предпочитаете нормальный стиль, то

if (color == "1" || color == "2" || color == "3")

операторы || а также or одинаковы, но || это старая версия, так что это та, которую использует большинство людей.

5

Кроме того, такие заявления не будут работать:

         invColorCode = "25" << endl;

Не совсем уверен, что вы пытаетесь достичь с endl,

1
По вопросам рекламы [email protected]