Вопрос № 93846: есть такая каманда, декодирует дату в переменные:
Date().DecodeDate (&year,&month,&day);
а как декодировать дату из поля таблицы? (задача сравнить дату из таблицы с текущей?)...Вопрос № 93858: Здравствуйте, уважаемые эксперты.
Подскажите начинающему:
как ч/з оператор cout выводить русские символы?
В инете нашел разные варианты, но кроме функции CharToOem (которой не очень удобно пользоваться) ничего не нашел - есть самопальные ...
Вопрос № 93.846
есть такая каманда, декодирует дату в переменные:
Date().DecodeDate (&year,&month,&day);
а как декодировать дату из поля таблицы? (задача сравнить дату из таблицы с текущей?)
Отвечает: Попов А.С.
Здравствуйте, Michail_bal!
Выгоднее использовать другую winAPI функцию - CurrentDateTime() и привести ее к типу AnsiString
код будет следующим:
TDateTime tm; // структура с соответствующими полями
AnsiString time;
time=FormatDateTime("dd mmm yy >> hh:mm", tm.CurrentDateTime()); // приведение // к типу AnsiString в соответствующем формате
if(time==tabl_line) ShowMessage("даты совпадают");
Ответ отправил: Попов А.С. (статус: 1-ый класс)
Ответ отправлен: 04.07.2007, 14:18
Вопрос № 93.858
Здравствуйте, уважаемые эксперты.
Подскажите начинающему:
как ч/з оператор cout выводить русские символы?
В инете нашел разные варианты, но кроме функции CharToOem (которой не очень удобно пользоваться) ничего не нашел - есть самопальные функции, а хотелось бы узнать возможно ли это сделать средствами С++/STL ( пытался использовать расширенную кодировку - wchar_t, wstring - какая-то каша - вместо букв идут какие-то цифры, компилятору все нравится). Использую среду MS VS 2003 .NET Professional. И еще, если пользователь вводит данные на русском языке в программу ч/з cin то cout выводит все как положено. Понимаю, что
проблемы с кодировками - но победить не могу. При ответе приведите пожалуйста примеры кода :-)) Заранее благодарен за ответы.
Дело в том, что в окне консоли символы выводятся в кодировке DOS866. Для правильного отображения русского текста нужно сохранить исходник в этой кодировке (для этого можно использовать любой текстовый редактор, поддерживающий такую возможность, напр.
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 04.07.2007, 09:05 Оценка за ответ: 4 Комментарий оценки: Спасибо, использую, но мне интересно есть ли возможность средствами STL бороться с этим явлением
Отвечает: Dark Daskin
Здравствуйте, Loony!
Чтобы проще было использовать CharToOem, можно написать что-то вроде этого:
#include <iostream>
#include <windows.h>
using namespace std;
int main (int argc, char* argv[])
{
cout << _("Можно писать по-русски") << endl;
return 0;
}
А вообще в инете наверное можно найти реализацию iostream с поддержкой кириллицы в windows-1251. (В нашем учебнике по С++, автор Павловская Т.А., был пример такой реализации, называлось CyrIOS).
--------- Драконы наступают!
Ответ отправил: Dark Daskin (статус: 1-ый класс)
Ответ отправлен: 04.07.2007, 10:00 Оценка за ответ: 4 Комментарий оценки: Спасибо, подобную функцию я тоже сделал, но хотелось бы решить данную проблему (если это возможно) без использования windows.h средствами STL
Отвечает: kool
Здравствуйте, Loony!
Чтобы было удобней пользоваться CharToOem
можно создать макрос или ф-цию, в кот.
и реализовать перекодировку с помощью CharToOem.
Удачи!
--------- I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 04.07.2007, 18:20 Оценка за ответ: 4 Комментарий оценки: Спасибо, я пользуюсь подобным методом, но хотелось решить проблему без windows.h ч/з STL. А что такое "в кот."?