Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 20:16   #1
fs444
Форумчанин
 
Регистрация: 18.08.2009
Сообщений: 289
По умолчанию Вывод русских символов в консоль

Чтобы выводить русские буквы в консоли, написал функцию rustext()

Код:
#include<iostream>
using namespace std;

#include<windows>

char rustext(char str)
{
   char buffer[1024];
   CharToOem(str, buffer);
   return buffer;
}

int main()
{
   cout << rustext("Строка") << endl;

   system("pause");
   return 0;
}
Но компилятор ругается
Цитата:
[C++ Error] Unit1.cpp(9): E2034 Cannot convert 'int' to 'const char *'
return может использоваться только в int-функции?

Цитата:
[C++ Error] Unit1.cpp(9): E2342 Type mismatch in parameter 'lpszSrc' (wanted 'const char *', got 'char')
Почему константа? ведь слова const я нигде не ставил. Наверное, "*" несет еще какуюто смысловую нагрузку?

Цитата:
[C++ Warning] Unit1.cpp(10): W8075 Suspicious pointer conversion
Suspicious pointer conversion - подозрительный указатель преобразования, как я понял. Что это означает?

Цитата:
[C++ Error] Unit1.cpp(10): E2034 Cannot convert 'char *' to 'char'
А здесь он что пытается преобразовать?

Цитата:
[C++ Error] Unit1.cpp(15): E2342 Type mismatch in parameter 'str' (wanted 'char', got 'char *')
Несовпадение типа в параметре 'str'. А почему несовпадение? Везде ж char. Или здесь что-то другое имеется в виду?

Может, есть более удачный вариант решения моего вопроса?
fs444 вне форума Ответить с цитированием
Старый 31.03.2010, 20:17   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
[C++ Error] Unit1.cpp(10): E2034 Cannot convert 'char *' to 'char'
медитируй .
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.03.2010, 20:22   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

char rustext(const char* str)
coNsept вне форума Ответить с цитированием
Старый 31.03.2010, 20:29   #4
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Код:
setlocale(LC_ALL,"russian");
Cpluser вне форума Ответить с цитированием
Старый 31.03.2010, 20:30   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2coNsept
char *rustext(const char* str)

причем в этой функции автор еще и пытается вернуть статический массив... трагедия, трагедия....
автор, вернись лучше к своим дятлам
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 31.03.2010, 20:32   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
char* rustext(const char* str)


P.S. Эх, опередили!...)
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 31.03.2010, 20:39   #7
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

2 pproger - Уху, проворонил указатель
coNsept вне форума Ответить с цитированием
Старый 22.02.2016, 01:09   #8
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

Написал так, но тоже не очень как-то красиво:

Код:
 char *rustext(char *str, char buffer[1024] )
    {
      // char buffer[1024];
       CharToOem(str, buffer);
       return buffer;
    }
вызов :
Код:
 char str[]="КАКОЙТО текст";
 char b[1024];
 rustext(str,b );
У вас возвращалось содержимое локального адреса buffer.
В общем потенциальные проблемы. Мой код тоже не очень.
vvmcpp вне форума Ответить с цитированием
Старый 22.02.2016, 09:22   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

На дату уже посмотрите...
waleri вне форума Ответить с цитированием
Старый 23.02.2016, 09:24   #10
Chedman
 
Регистрация: 16.09.2010
Сообщений: 3
По умолчанию

// записать в начале функции main ()
// две следующих строки
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Chedman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод русских букв в консоли sde C++ Builder 10 20.05.2010 03:02
Вывод времени в консоль. BlincAttack Общие вопросы .NET 2 06.10.2009 14:57
Не та кодировка русских символов в программах Linux Alex Cones Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 11 18.09.2009 21:44
Проверка на сущестование файла с названием из русских символов evgenrpo Win Api 6 10.06.2009 09:34