powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / С++ Вывод строки в DOS на русском
15 сообщений из 40, страница 2 из 2
С++ Вывод строки в DOS на русском
    #34603156
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Feniksa wrote:

> Как все поняли, библиотека шараварная. Если что не нравиться, можете
> изменить или переписать... Всё в ваших руках. Дерзайте и ВСЕМ удачи
>
shareware обычно значит "попользуйся N дней, потом плати".

maXmo wrote:
>я остановился на том, что держу строки в юникоде
Как-то вообще не очень часто возникала потребность выводить в консоль что-то
на русском языке, так как инглиш чаще использую...

Gluk (Kazan) wrote:
>Смешно
>По моему, он все таки обиделся
Да пускай обижается, сколько угодно. Если будет дальше развиваться, это
потом пройдет...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34603160
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV>По моему, он все таки обиделся
Да пускай обижается, сколько угодно. Если будет дальше развиваться, это
потом пройдет...Обижающиеся не развиваются.
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34603353
Guitarboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Полюбому развиваються , даже если обижаються , но это к делу не относиться .
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34603476
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GuitarboyПолюбому развиваються , даже если обижаються , но это к делу не относиться .

в этом топике, только это к делу и относится.
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34604270
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErVmaXmo wrote:
>я остановился на том, что держу строки в юникоде
Как-то вообще не очень часто возникала потребность выводить в консоль что-то
на русском языке, так как инглиш чаще использую...а строки всегда полезно в юникоде держать :)
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34605340
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> а строки всегда полезно в юникоде держать :)
Я сейчас Qt использую. Так что это не проблема. Хотя для консолей обычно
старался английским текстом ограничиться в в районе первых 128 байт ASCII,
чтобы не загоняться...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34615613
RUSYA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это что-ли? :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void myprint (char* str){
	cin.clear(); 
	char* buffer;
	buffer = strdup (str);
	CharToOem (str, buffer);
	cout << buffer;
	free (buffer);
}
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34615954
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пусть простит меня Феникс (т.к это библиотека с его сайта )

а я вот нетак давно чтото подное писал вроде компактнее получилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
char* to_DOScode(char *pstr,int from, int count)
{
  //код модифицирует count символов строки pstr начиная с from 
  // rus     upper  192-223               168 Ё
  // rus     lower  224-255               184 ё
  
  // rusDOS  upper  128-159                   240 Ё
  // rusDOS  lower  160-175 & 224-239     241 ё

  unsigned char *str=(unsigned char*)pstr;
  for(DWORD i=from;i<(from+count);i++)
  {
    if(str[i]>= 192  && str[i]<= 239 ) //А-п
    { str[i]-= 64 ;
      continue;
    }
    if(str[i]>= 240 )                //р-я  240-255
    { str[i]-= 16 ;
      continue;
    }
    if(str[i]== 168 )  str[i]= 240 ;
    if(str[i]== 184 )  str[i]= 241 ;
  }
  return *this;
}
похоже на тараканьи бега
но
может кому пригодится
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34615955
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опчатка
return pstr;
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34616325
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
началось :(
хит-парад велосипедов
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34770210
GamalPaperot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Резюме по дискуссии с перекодом в кириллицу (для Visual C++ 8.0)
Эта проблема была и у меня, и я долго вычитывал все сообщения в этом форуме, пробовал применять все, что предлагают - все равно не работает: текст такой

#include <windows.h>
#include <string>
#include <iostream>

using namespace std;

string RusText(string _text) // функция перекодировки
{
char rus_text[1024];

CharToOem(_text.c_str(), rus_text);

return string(rus_text);
}

Далее, где надо вывести строку на русском пишешь, к примеру:

cout << endl << RusText("Осталось циклов: ").c_str() << nCount;

И тем не менее ни х... не работало, усекаете?

Наконец, после медитации над кодом, решил посмотреть свойства проекта
(я их никогда не смотрел, считал, что машина знает, что делает).

Поменял там в двух местах (именно в двух, по отдельности не помогает)
установки:

Configuration properties -> General -> Project Defaults -> Character Set = Not Set (!)

Далее:

Configuration properties -> Linker -> System -> Sub System = Not Set (! правда, возможны и другие выборы, сами поэкспериментируйте)

И все заработало, при этом все предлагаемые решения (типа SetConsoleOutputCP(1251);)
или ручная смена свойств шрифта при открытии окна консоли не давали однозначного а,
главное, работающего без "ритуальных приседаний" решения

Ом мане падме хум всем
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34770741
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GamalPaperotОм мане падме хум всем

не дается

GamalPaperotвсем
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34771198
Oleg N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая функция CharToOemBuff

MSDN LibraryThe CharToOemBuff function translates a specified number of characters in a string into the OEM-defined character set. (OEM stands for original equipment manufacturer.)

BOOL CharToOemBuff(
LPCTSTR
lpszSrc, // pointer to string to translate
LPSTR lpszDst, // pointer to translated string
DWORD cchDstLength // length of string to translate, in characters
);

Parameters
lpszSrc - Pointer to the null-terminated string to translate.
lpszDst - Pointer to the buffer for the translated string. If the CharToOemBuff function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if CharToOemBuff is being used as a wide-character function.
cchDstLength - Specifies the number of characters to translate in the string identified by the lpszSrc parameter.
Return Values
The return value is always nonzero.



Пример кода:

Код: plaintext
1.
2.
3.
4.
5.
6.
CString cBuf1;
char buf[ 100 ]; 

cBuf1 = (CString)"Привет";  // WIN-кодировка
CharToOemBuff(cBuf1, buf, cBuf1.GetLength()+ 1 );
cBuf1 = (CString)buf;   //DOS-кодировка

и все работает.
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34771696
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GamalPaperotИ все заработало, при этом все предлагаемые решения (типа SetConsoleOutputCP(1251);)
или ручная смена свойств шрифта при открытии окна консоли не давали однозначного а,
главное, работающего без "ритуальных приседаний" решенияну дык без правильного-то бубна в програмизьм соваться не следует
...
Рейтинг: 0 / 0
С++ Вывод строки в DOS на русском
    #34772143
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FeniksaА по скорости она так же выполняеться. Если говорить о порядках, то они и в самом деле равны и отличаются только на константный множитель - ваш код медленнее в два раза. Непринципиально для алгоритмов, но может быть принципиально для реализации. ;-)
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / С++ Вывод строки в DOS на русском
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]