Изучаю C++ по книге, и при написании такого кода
#include "stdafx.h"
#include <iostream>
using namespace std;
char askYesNo1();
char askYesNo2(string question);
int main()
{
char answer1 = askYesNo1();
cout << "Thanks for answering: " << answer1 << "\n\n";
char answer2 = askYesNo2("Do you wish to save your game?");
cout << "Thans for answering: " << answer2 << "\n";
system("pause");
return 0;
}
char askYesNo1()
{
char response1;
do
{
cout << "Please enter 'y' or 'n': ";
cin >> response1;
} while(response1 != 'y' && response1 != 'n');
return response1;
}
char askYesNo2(string question)
{
char response2;
do
{
cout << question << " (y/n): ";
cin >> response2;
} while(response2 != 'y' && response2 != 'n');
return response2;
}
Возникает ошибка "Ошибка C2679 бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое преобразование отсутствует)" в этой функции:
char askYesNo2(string question)
{
char response2;
do
{
cout << question << " (y/n): ";
cin >> response2;
} while(response2 != 'y' && response2 != 'n');
return response2;
}
Код пишу в Visual Studio.
Вот эта строка:
cout << question << " (y/n): ";
Выводит объект типа std::string, который определён в заголовке <string>, там же определён соответствующий оператор вывода (operator<<), поэтому нужно подключить этот заголовок:
#include <string>
Иначе компилятор не знает, где ему взять этот оператор, о чём сообщение об ошибке и говорит.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники