Модераторы: bsa

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> прблема с командной строкой 
V
    Опции темы
sasha962
  Дата 22.12.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Когда я печатаю в коде программы русские буквы, то при выполнении программы командная строка выдаёт иероглифы. 
PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



потому что кодировка другая, тебе нужны 2 функции
Код

BOOL CharToOem(      

    LPCTSTR lpszSrc,
    LPSTR lpszDst
);
BOOL OemToChar(      

    LPCSTR lpszSrc,
    LPTSTR lpszDst
);




--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
sasha962
  Дата 22.12.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



А что их нужно в код программы включить? 
smile 

Это сообщение отредактировал(а) sasha962 - 22.12.2007, 15:04
PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



Код

char * str = "Пример\n";
cout << str;
char * buf = new char [sizeof(str)];
CharToOem(str, buf);
cout << buf;


Добавлено через 1 минуту и 11 секунд
Цитата(sasha962 @  22.12.2007,  15:00 Найти цитируемый пост)
А что их нужно в код программы включить?

это функции их не включают в код а используют !

Добавлено через 3 минуты и 42 секунды
и не забудь подключить <windows.h>


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
sasha962
  Дата 22.12.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Но компилятор выдаёт ошибку.
А приведите пожалуйста полный код программы.
PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



Цитата(DigitSphinx @  22.12.2007,  15:09 Найти цитируемый пост)
и не забудь подключить <windows.h>


Добавлено через 46 секунд
и ВСЕГДА цитируй компилятор (на что он ругается)

Добавлено через 4 минуты и 33 секунды
Код

#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    char * str = "Пример\n";
    cout << str;
    char * buf = new char [sizeof(str)];
    CharToOem(str, buf);
    cout << buf;
    return 0;
}


 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
sasha962
  Дата 22.12.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



Слово пример выводится, но перед этим словом тоже иероглифы.
PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



smile  smile 
так я специально вывел слово «пример» до его преобразования и после !!!!!
 smile

Добавлено через 54 секунды
и не корчь мне злые рожи  smile 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
sasha962
  Дата 22.12.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 19.12.2007

Репутация: нет
Всего: нет



А теперь такая ошибка:
Цитата

1 D:\Dev-Cpp\main.cpp stdafx.h: No such file or directory. 

PM MAIL   Вверх
DigitSphinx
Дата 22.12.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



потому что у нас разные компиляторы, удали эту строку !
тебе осталось :
1 - поставить мне плюсик  smile 
2 - пометить тему как решенную   smile 
 smile 

Это сообщение отредактировал(а) DigitSphinx - 22.12.2007, 15:29


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
DragoonFighter
Дата 22.12.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Знаю, тема уже решена, но все это можно сделать гораздо проще! 

Функция:
Код

void RusOut(char *Str)
{
unsigned char c;
for(int i=0;Str[i]!='\0';i++)
  {
  c=Str[i];
  if(c>127)
    {
    if(c<240)c-=64;
    else     c-=16;
    }
  cout<<c;
  }
}


Приминение:
Код

RusOut("Тут пишем все что хотим!\n");




Это сообщение отредактировал(а) DragoonFighter - 22.12.2007, 19:39
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
DigitSphinx
Дата 22.12.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



что то слишком заморочено и не полно !
Код

char * ToRus(char * str)
{
    char * buf = new char [sizeof(str)];
    CharToOem(str, buf);
    return buf;
}

Код

cout << ToRus("Test\nПример\n");
printf(ToRus("Test\nПример\n"));


Это сообщение отредактировал(а) DigitSphinx - 22.12.2007, 18:39


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
DragoonFighter
Дата 22.12.2007, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 16.7.2007
Где: Access denied

Репутация: нет
Всего: нет



Цитата(DigitSphinx @  22.12.2007,  18:37 Найти цитируемый пост)
что то слишком заморочено и не полно !


Да вот не до конца скопировал... теперь полный!
--------------------
Зрелость личности - это не когда человек хочет умереть ради кого-то, а когда он хочет жить ради кого-то.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mdbr
Дата 18.3.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.3.2008

Репутация: нет
Всего: нет



Кто-нибудь может пожалуйста объяснить как работает код DragoonFighter'a?
Код

void RusOut(char *Str)
{
unsigned char c;
for(int i=0;Str[i]!='\0';i++)
  {
  c=Str[i];
  if(c>127)
    {
    if(c<240)c-=64;
    else     c-=16;
    }
  cout<<c;
  }
}

Понравилось тем что не надо подключать дополнительные заголовочные файлы, но я не понимаю почему мы отнимаем то или иное число...
PM MAIL   Вверх
korian
Дата 18.3.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



mdbr

DragoonFighter, нашел закономерность для перевода из win1251 в OEM (не помню кодировку)
чтоб понять надо посмотреть таблицу символов для одной и другой кодировки.
PM   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0846 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.