Нет оператора "<<", соответствующего этим операндам. Типы операндов std::wostream << std::string
Я вывожу данные в консоль, используя "wcout". В этом коде эта ошибка появилась, когда я попытался отобразить имя "wcout<<Name.GetNickName". Пробовал и просто через "cout". Консоль показывает просто пустое место. Забив в инете по этому поводу тоже ничего нужного не сказано. Идея состоит в том, чтобы отображать имя игрока в конце игры викторины. "wcout" я использую для создания цветного текста. В define выше написано. Пробовал и писать "wcout<<L ""<<Name.GetNickName". Но и он жалуется на это.
//Стартовое окно
int StartWindow()
{
int variant;
Player SetName;
string NickName;
wcout << L"1 - Начать викторину"<<endl;
wcout << L"2 - Закрыть окно" << endl;
cin >> variant;
system("cls");
if (variant == 1)
{
cout << "Введите свой ник" << endl;
cin >> NickName;
SetName.SetNickName(NickName);
system("cls");
QuestionsWindow();
}
else
{
system("cls");
cout << "Ну и больно надо! Но вы еще можете вернуться\n 1-Вернуться обратно\n 2-Уйти" << endl;
cin >> variant;
if (variant==1)
{
system("cls");
StartWindow();
}
else
{
system("cls");
cout << "Всего хорошего!"<< endl;
return 0;
}
return 0;
}
}
//Перенос из файла в вектора
void LoadData(string name, int dif)
{
ifstream File(name);
string readLine;
int i = 0;
if (!File.is_open())
{
cout << "Ошибка открытия файла" << endl;
}
else
{
while (getline(File, readLine))
{
if (i % 3 == 0)
{
if (dif == 0)
{
EasyQuestion.Questions.push_back(readLine);
}
if (dif == 1)
{
MediumQuestion.Questions.push_back(readLine);
}
if (dif == 2)
{
HardQuestion.Questions.push_back(readLine);
}
}
if (i % 3 == 1)
{
if (dif == 0)
{
EasyQuestion.Answers.push_back(readLine);
}
if (dif == 1)
{
MediumQuestion.Answers.push_back(readLine);
}
if (dif == 2)
{
HardQuestion.Answers.push_back(readLine);
}
}
if (i % 3 == 2)
{
if (dif == 0)
{
EasyQuestion.CorrectAnswer.push_back(readLine);
}
if (dif == 1)
{
MediumQuestion.CorrectAnswer.push_back(readLine);
}
if (dif == 2)
{
HardQuestion.CorrectAnswer.push_back(readLine);
}
}
i++;
}
}
File.close();
}
bool result;
//Проверка на правильный вариант ответа
void IsAnswerCorrect(int answer, string correctAnswer)
{
int correctAnswerInt = stoi(correctAnswer);
result = answer == correctAnswerInt;
if (result)
{
score++;
wcout << L"Вы ответили правильно, ваш счет: ";
}
else
{
wcout << L"Вы ответили неправильно, ваш счет: ";
}
}
//Окно вопросов
void QuestionsWindow()
{
int choise, choise1 = 1, choise2;
string str, line;
for (int i = 0; i < 2; i++)
{
wcout << GRN << L"\t\t\t ВЫБЕРИТЕ ОДИН ИЗ ВАРИАНТОВ\n" << WHT << endl;
wcout << RED << L"1-Легкий вопрос\t" << L"\t2-Средний вопрос" << L"\t3-Сложный вопрос\t"<< L"\t4-Закончить Викторину" << WHT << endl;
cin >> choise;
int count = 0;
int index = 0;
while (true)
{
count++;
if (choise == 1)
{
cout << EasyQuestion.Questions[index] << endl;
cout << EasyQuestion.Answers[index] << endl;
cin >> choise2;
IsAnswerCorrect(choise2, EasyQuestion.CorrectAnswer[index]);
if (count == EasyQuestion.Questions.size())
{
wcout << BLU << L"Вы закончили этап с легкими вопросами! Нажмите ENTER чтобы перейти в меню вопросов!" << WHT << endl;
cin.ignore();
cin.get();
system("cls");
break;
}
}
if (choise == 2)
{
cout << MediumQuestion.Questions[index] << endl;
cout << MediumQuestion.Answers[index] << endl;
cin >> choise2;
IsAnswerCorrect(choise2, MediumQuestion.CorrectAnswer[index]);
if (result == true)
{
score++;
}
wcout << RED << score << WHT << endl;
if (count == MediumQuestion.Questions.size())
{
wcout << BLU << L"Вы закончили этап со средними вопросами! Нажмите ENTER чтобы перейти в меню вопросов!" << WHT << endl;
cin.ignore();
cin.get();
system("cls");
break;
}
}
if (choise == 3)
{
cout << HardQuestion.Questions[index] << endl;
cout << HardQuestion.Answers[index] << endl;
cin >> choise2;
IsAnswerCorrect(choise2, HardQuestion.CorrectAnswer[index]);
if (result == true)
{
score+=2;
}
wcout << RED << score << WHT << endl;
if (count == HardQuestion.Questions.size())
{
wcout << BLU << L"Вы закончили этап со сложнымы вопросами! Нажмите ENTER чтобы перейти в меню вопросов!" << WHT << endl;
cin.ignore();
cin.get();
system("cls");
break;
}
}
if (choise==4)
{
system("cls");
wcout << L"Спасибо вам за участие в Викторине!" << endl;
ShowResult();
wcout << BLU << L"Чтобы закончить Викторину нажмите ENTER..." << WHT << endl;
cin.ignore();
cin.get();
exit(0);
}
index++;
wcout << BLU << L"Чтобы перейти к следующему вопросу нажмите ENTER..." << WHT << endl;
cin.ignore();
cin.get();
system("cls");
}
}
}
};
int main() {
setlocale(LC_ALL, "Rus");
int name;
Viktorina Start;
Player Name;
Start.LoadData("MyFile.txt", 0);
Start.LoadData("myfile2.txt", 1);
Start.LoadData("myfile3.txt", 2);
Start.StartWindow();
wcout << Name.GetNickName() << endl; //PROBLEM WAS HERE
system("pause");
return 0;
}