Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Поиск строки в файле с кодировкой UTF-8  (Прочитано 8696 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AndrewF
Гость
« : 08-12-2005 08:58 » 

Есть файл с кодировкой UTF-8, в нем - русские символы.Надо в файле найти заданную строку(из русских символов).
Код:
                std::fstream searchFile("D:\\test.txt");
searchFile.unsetf(std::ios_base::skipws);
std::string searchStr="строка, которую надо найти";
std::string buf(searchStr);
int bufSize=buf.length();
for (int i=0;i<bufSize;++i)buf[i]='x';

char s;
while(searchFile>>s)
{
buf[bufSize-1]=s;
if (buf==searchStr)std::cout<<"строка найдена!"<<std::endl;
for(int i=1;i<bufSize;++i)buf[i-1]=buf[i];
}
Этот вариант не работает с UTF-8, хотя в ANSI все отлично.Как можно решить проблему для UTF-8?
« Последнее редактирование: 17-12-2007 16:45 от Алексей1153++ » Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #1 : 08-12-2005 11:49 » 

searchStr нужно переконвертировать в UTF-8
Записан

Удачного всем кодинга! -=x[PooH]x=-
AndrewF
Гость
« Ответ #2 : 08-12-2005 11:56 » 

searchStr нужно переконвертировать в UTF-8
Если не трудно подскажи как это сделать?
Но вообщето хотелось бы все-таки переконвертировать UTF-8 в ANSI
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #3 : 08-12-2005 12:10 » new


рекомендуют (сам не пробовал, так что если что... звиняй) использовать макрос A2W (ANSI to Wide), а потом Try MultiByteToWideChar, WideCharToMultiByte

ANSI->UNICODE->UTF-8
UTF8->UNICODE->ANSI

а зачем тебе конвертировать весь буфер поиска, если строку поиска гораздо проще?
Записан

Удачного всем кодинга! -=x[PooH]x=-
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines