Перво-наперво: я знаю, что этот код слишком длинный и может быть несколько сокращен. Тем не менее, я не хочу помогать с сокращением, я просто пытаюсь понять некоторые основы, и моя проблема сейчас заключается в операторах и хранении значений. Как вы, вероятно, можете видеть из кода, я пытаюсь использовать кучу операторов 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;
}
Похоже, вы не используете потоки ввода и вывода должным образом. Например:
invTypeCode = "T47" << endl;
Обычно, если вы используете endl и <<левая сторона для << оператор является std :: ostream. В этом случае lhs — это строка, поэтому компилятор жалуется. В этом случае, я думаю, вы действительно хотите заменить «T47» на «T47 \ n» и удалить «<< епсИ».
Вы также ошиблись в последней ссылке на «полный код»; это должен быть «fullCode» с заглавной буквы «C». C ++ чувствителен к регистру.
if (color == "1" or "2" or "3")
должно быть
if (color == "1" or color == "2" or color == "3")
или если вы предпочитаете нормальный стиль, то
if (color == "1" || color == "2" || color == "3")
операторы ||
а также or
одинаковы, но ||
это старая версия, так что это та, которую использует большинство людей.
Кроме того, такие заявления не будут работать:
invColorCode = "25" << endl;
Не совсем уверен, что вы пытаетесь достичь с endl
,