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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2008, 19:50   #1
AI01
Новичок
Джуниор
 
Регистрация: 25.02.2008
Сообщений: 1
По умолчанию Считывание символов

Народ, наверняка кто нибудь наталкивался на такую задачу, включающую в себя проблемы со считыванием из файла.
Дело вот в чём - когда пытаешься распечатать номер символа, ну допустим ,'A', то программа выдаёт его корректно, но стоит только считать символ из файла, как его номер абсолютно не соответствует нужному, например, он равен -126300, а не 65, который соответствует этому символу. Скажите, в чём я не догоняю?(использую я низкоуровневый В/В)
Кстати всё это в Linuxе
AI01 вне форума Ответить с цитированием
Старый 25.02.2008, 20:01   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Какого типа переменная, в которую он читается? 126 тыщ - это явно не char.
B_N вне форума Ответить с цитированием
Старый 25.02.2008, 21:28   #3
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Выложи программу.
------------
Считать символ из файла и вывести его код в консоль:
Код:
ifstream ifs("file.dat");
char ch;
ifs >> ch;
cout << static_cast<int>(ch);

Последний раз редактировалось alexx777; 25.02.2008 в 21:39.
alexx777 вне форума Ответить с цитированием
Старый 29.02.2008, 18:45   #4
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Цитата:
Сообщение от alexx777
Выложи программу.
+1

Вообще очень странная проблемма... А что с кодировками? -126300 вылезает даже за 2 байта.. Что происходит, если ты его символом пытаешься вывести? Хотя проблема наверное всё же в преобразовании или в неправильном чтении/выводе.

Цитата:
Сообщение от alexx777
Код:
cout << static_cast<int>(ch);
Можно вопрос? А нафиг тут статик каст? )) Можно обычным преобразованием типов. Вообще касты нужны в основном для движения указателей вверх и вниз по иерархии классов, либо для преобразования из безтиповых указателей (reinterpret)
theos вне форума Ответить с цитированием
Старый 29.02.2008, 23:56   #5
ag-moscow
Пользователь
 
Аватар для ag-moscow
 
Регистрация: 24.02.2008
Сообщений: 13
По умолчанию

Странно. Вот код который работает на Mandriva 64bit. Файл main.cpp компилировал командой g++ main.cpp:

#include <fstream>
#include <iostream>

using namespace std;

int main ()
{
ifstream str ("file.dat");
char s;
str >> s;
cout << static_cast<int>(s) << endl;
return 0;
}
Для значения в файле "А" вернул 65. Имхо дело еще в чем а не в коде
printf ("Hello, World!"), fflush (stdout);
std::cout << std::endl;
ag-moscow вне форума Ответить с цитированием
Старый 01.03.2008, 17:30   #6
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Цитата:
Сообщение от theos Посмотреть сообщение
Можно вопрос? А нафиг тут статик каст? ))
Можно, конечно, использовать преобразования типов как в С:

(int) ch;

но так более понятнее какого рода преобразование.
alexx777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считывание из СОМ(или USB) порта voron29 Общие вопросы Delphi 1 29.06.2008 13:09
считывание с edit 1g2h Общие вопросы Delphi 2 27.06.2008 08:50
Считывание кирилличных символов sone4ko Общие вопросы C/C++ 3 23.05.2008 12:43
считывание информации Артэс Общие вопросы C/C++ 18 14.02.2008 12:46
Считывание из файла DimkinStd Общие вопросы Delphi 7 24.01.2007 19:18