1

Тема: C++. Передача символьного аргументу до символьного параметра.

Доброго дня.

У наведеному нижче фрагменті коду при виклику іншої функції я пробую передати значення змінної "program_language" для відповідної обробки.

Змінна "char program_language[3];" - оголошена в такому вигляді для того, щоб користувач при виборі мови вводив саме два символи, як про це його просить програма.

Але MVS лається на рядок "language_selection_check(program_language);", вказуючи на помилку: аргумент типу 'char*' несумісний з параметром типу 'char'.

Допоможіть будь ласка розібратися, як мені грамотно вирішити це питання.

void program_language_selection()
{
    std::cout << "Please, select program language ('En' or 'Sp'): ";

    char program_language[3];

    std::cin >> program_language;

    language_selection_check(program_language);
}

void language_selection_check(char program_language)
{
    if (program_language == 'En' || program_language == 'en' || program_language == 'EN')

        english_version_program();

    else if (program_language == 'Sp' || program_language == 'sp' || program_language == 'SP')

        spanish_version_program();

    else

        std::cout << "Your answer is incorrect. Please enter the correct answer.";
}

2 Востаннє редагувалося koala (24.08.2022 23:34:12)

Re: C++. Передача символьного аргументу до символьного параметра.

char program_language[3]; //program_language є масивом ([]) з 3 значень типу символ (char)
void language_selection_check(char program_language) //program_language є символом (char)

Це різні типи.
Крім того, масиви оператором == порівнювати (майже) безглуздо, бо порівнюватимуться адреси в пам'яті, а не вміст, а в одиничних лапках ('') може бути лише один символ, це символьний літерал, а не стрічковий.
Гадаю, вам треба скористатися типом std::string для program_language і всюди замінити одиничні лапки на подвійні ("").

Подякували: AsusD, leofun012