Добрый день.
Странная ситуация.
Есть файл в кодировке cp1251.
В своей проге на C++ через fopen открываю файл
читаю строку из файла с помощью fgets.
Дальше с полученной строкой делаю следующее.
strstr(buffer,"счет№") И в результате получаю null. Хоть в первой строке файла точно есть эта фраза.
Что это за приколы и как их пофиксить?
параметр "счет№" это в какой кодировке, определённо не cp1251? ))Если ты хочешь указать параметр прямо в коде программы (правильнее это делать в ресурсах-настройках) то можешь написать так:
static char srch[] = { 241, 247, 184, 242, 185, 0}; /*"счёт№" в кодировке CP1251*/
strstr(buffer, srch)
>параметр "счет№" это в какой кодировке, определённо не cp1251? ))
>
>Если ты хочешь указать параметр прямо в коде программы (правильнее это делать
>в ресурсах-настройках) то можешь написать так:
>
>static char srch[] = { 241, 247, 184, 242, 185, 0}; /*"счёт№"
>в кодировке CP1251*/
>strstr(buffer, srch)не так не годиться, непонятно совершенно! т.е не сопровождаемо
писать надо как пишеться, и приводить к своей кодировке то что считал с файла через iconv
можно конечно наоборот.
но в код преобразованные кодировки лучше не вставлять, это ужасно выглядит.
В коде кириллицы вообще быть не должно
>В коде кириллицы вообще быть не должноutf8 на здоровье
>В коде кириллицы вообще быть не должноЧто за дискриминация? Тогда уж, в коде не должно быть строковых констант.
А обосновать? Я бы понял "в коде языкозависимых строковых констант быть не должно, их нужно вынести в отдельный файл для облегчения интернализации", а вот ваше утверждение попахивает шовинизмом, чем кириллица так провинилась?
Возник еще один вопрос а в какой кодировке g++ воспринимает русскую строку в коде?
>Возник еще один вопрос а в какой кодировке g++ воспринимает русскую строку
>в коде?Он вообще не воспринимает её как строку )) Для него это последовательность байт.
Соответственно никакой проблемы кодировки ))
>Возник еще один вопрос а в какой кодировке g++ воспринимает русскую строку
>в коде?В какой напечатаете. Вы ведь знаете в какой кодировке набираете сорцы ?
Готов поспорить что в вашем случае это utf8, а вы этого даже и не заметили.