Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Вопрос по ASCII/C++  (Прочитано 2475 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Вопрос по ASCII/C++
« : 03 Марта 2010, 21:22:00 »
Здравствуйте друзья!

Столкнулся с такой проблемой, что нужно реализовать функцию, в которую в качестве аргумента передаю цифру, а функция возвращает ее ASCII символ.
Например: предаю 5, а обратно получаю #

Проблем с функциями нет, я вот только не помню как это делается, то ли у переменной свой тип, толи какая то еще функция используется. Освежите пожалуйста мою память или подскажите в каком направлении рыть.

Заранее спс  :)
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

Оффлайн yaromir

  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #1 : 03 Марта 2010, 22:27:14 »
Присваиваете переменной типа char значение целочисленной константы и выводите.
#include <iostream>

int main() {
//35 - код символа '#' в таблице ASCII.
char c = 35;
std::cout << c << std::endl;
return 0;
}

Вывод:
#

http://ascii.org.ru/ascii.pdf

P.S. Надо писать с использованием utf-8 . ;) Еще в 1995 году к C89 добавили все, что касается wchar_t . На дворе 2010 год, а большинство программистов до сих пор это не осилило. :(
« Последнее редактирование: 06 Марта 2010, 00:41:57 от yaromir »

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #2 : 03 Марта 2010, 22:47:23 »
Присваиваете переменной типа char значение целочисленной константы и выводите.
#include <iostream>

int main() {
char c = 35; //Код символа '#' в таблице ASCII.
std::cout << c << std::endl;
return 0;
}

Вывод:
#

http://ascii.org.ru/ascii.pdf

P.S. Надо писать с использованием utf-8 . ;) Еще в 1995 году к C89 добавили все, что касается wchar_t . На дворе 2010 год, а большинство программистов до сих пор это не осилило. :(


Спасибо большое!

Я исправлюсь  :)
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

Оффлайн yaromir

  • Активист
  • *
  • Сообщений: 670
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #3 : 06 Марта 2010, 00:43:15 »
Не за что. ;)
Исправляйтесь - Откройте для себя wchar_t.

Оффлайн cfg

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #4 : 08 Марта 2010, 22:43:02 »
У меня тоже возник вопрос... Мне нужно он символьно считать файл:
while(filein.get(ch))
{
}
Но проблема в том что объект get работает только с char, не подскажите что делать?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #5 : 09 Марта 2010, 12:39:26 »
Код: (input.txt) [Выделить]
Привет, cfg!
Это тебе в кодировке UTF-8 написано,
а читает в широких символах!

Код: (main.cpp) [Выделить]
/*
 * File:   main.cpp
 * Author: yurik
 *
 * Created on 9 Март 2010 г., 16:24
 */

#include <cstdlib>
#include <clocale>
#include <wchar.h>


#include <iostream>
#include <fstream>
#include <locale>
/*
 *
 */
int main(int argc, char** argv) {

    std::setlocale(LC_ALL, getenv("LANG"));
    std::locale loc(getenv("LANG"));
    std::wcout.imbue(loc);

    std::wifstream file("input.txt");
    file.imbue(loc);

    if (!file) {
        std::wcerr << L"Ошибка открытия файла!" << std::endl;
        return (EXIT_FAILURE);
    }

    wchar_t ch;
    while (file.get(ch))
        std::wcout << ch;

    std::wcout << L"И печатает, кстати, тоже широкими символами" << std::endl;

    return (EXIT_SUCCESS);
}

Ключевое здесь std::wifstream
« Последнее редактирование: 09 Марта 2010, 12:43:12 от Yurror »

Оффлайн cfg

  • Новичок
  • *
  • Сообщений: 44
    • Просмотр профиля
Re: Вопрос по ASCII/C++
« Ответ #6 : 09 Марта 2010, 14:55:49 »
Yurror, большое спасибо.

 

Страница сгенерирована за 0.051 секунд. Запросов: 25.