Не могу сравнить i-ый элемент строки с буквой (кириллица)

#include <iostream>
#include <fstream>
#include <string>
#include <clocale>

using namespace std;

struct Bukvu {
    int e; int a; int T; int o; int p; int H; 
    int K; int x; int c; int B;  int M;
};

Bukvu eng;
Bukvu rus;

int main()
{

setlocale(LC_ALL, "Russian");
wstring line;

wifstream in("text.txt"); 

if (in.is_open()) getline(in, line);
else cout << "Error";

for (int i = 0; i < line.size(); i++) {
    if ((line[i] == 'A') || (line[i] == 'a')) eng.a += 0;
    else if ((line[i] == "А") || (line[i] == "а")) rus.a += 1;
}
in.close();     // закрываем файл
cout << eng.a;
}

Пробовал и '', и "" - выдает ошибки в строке с кириллицой 'а' "А":

ISO C++ forbids comparison between pointer and integer с ""
warning: multi-character character constant [-Wmultichar] с ''

Помогите исправить, 1 курс универа, только разбираюсь в с++.
Заранее спасибо.

Проблему решил. Выводил line[i] элемент и смотрел его кодировку, как и предполагалось кириллица была из двух символов. В строке проверял элемент на кодировку которую узнал при выводе.


Ответы (1 шт):

Автор решения: isnullxbh

Используйте L префикс для символьных литералов:

std::wstring str { L"АБВ" };
str[1] == L'Б';

Описание можно найти здесь.

P.S. Обратите внимание на кавычки - line[i] == "А" - здесь вы пытаетесь сравнивать значение i-ого элемента с символьной строкой (не литералом!).

→ Ссылка