Я столкнулся с этим странным явлением суровых времен. Если я использую ifstream для подачи программы с содержимым файла и применяю регулярное выражение к входящим словам, немецкие буквы ä ö ü предоставляют мне некоторые трудности. Если какой-либо из них появляется в начале слова, регулярное выражение не может распознать их, но не в том случае, если какое-либо из этих букв появляется внутри слова. Таким образом, эти строкиНемецкие Umlaute и регулярные выражения
string word = "über";
regex check {R"(\b)" + word + R"(\b)", regex_constants::icase};
string search = "Es war genau über ihm.";
не работает, потому что регулярное выражение не находит über в поиске строк. Однако
string word = "für";
regex check {R"(\b)" + word + R"(\b)", regex_constants::icase};
string search = "Es war für ihn.";
будет работать, потому что ü появляется в слове. Почему это и как я могу это исправить? Я подумал о замене каждого ü на ue и каждого ä ae и каждого ö by oe, а затем отменить замену, но есть ли еще одна возможность? Я работаю с Visual Studio 2015.
Проблема с набором символов? Все ли UTF-8 или что-то еще? – tadman