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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2013, 20:06   #1
Faton 11
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 74
По умолчанию вместо 0 и 1 в массив из файла записываются 48 и 49

Добрый вечер!
Есть текстовый файл, содержащие только нули и единицы без пробелов. Когда пытаюсь считать файл в массив, вместо 0 и 1 в него записываются 48 и 49. Записываю таким образом:
Код:
        int mas1[N];
 std::ifstream TextInBinary("C:\\Files\\TextInBinary.txt",ios::in);
	for (int i=0;i<=N;i++)
	 {
		 mas1[i]=TextInBinary.get();
	}
        TextInBinary.close();
Как нужно записать правильно?

(Массиву mas1 присваивать тип сhar нельзя, потому что в дальнейшем не будет выполняться операция "логическое ИЛИ")

Последний раз редактировалось Faton 11; 07.03.2013 в 20:10.
Faton 11 вне форума Ответить с цитированием
Старый 07.03.2013, 20:14   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
mas1[i] = TextInBinary.get() - 48;
Проблем-то
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.03.2013, 20:18   #3
Faton 11
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 74
По умолчанию

Это не хорошо =) Или может кто-нибудь знает, как осуществить операцию "логическое ИЛИ" между двумя char-ами?
Faton 11 вне форума Ответить с цитированием
Старый 07.03.2013, 20:26   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А по-моему вполне допустимо
А чем char'ы от чисел отличаются (в смысле битовых операций)? Просто логическое "или" будет равно 48 или 49.
Вы, конечно, можете использовать функции для преобразования цифры-символа в число, но это неоправданно, когда достаточно вычесть 48.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 07.03.2013, 20:29   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
        int mas1[N];
 std::ifstream TextInBinary("C:\\Files\\TextInBinary.txt",ios::in);
	for (int i=0;i<=N;i++)
	 {
		 short int c;
                TextInBinary>>c;
                mas1[i]=c;
	}
        TextInBinary.close();
не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.03.2013, 20:55   #6
Faton 11
Пользователь
 
Регистрация: 04.10.2011
Сообщений: 74
По умолчанию

Спасибо всем, кажется, обошлось =)
Faton 11 вне форума Ответить с цитированием
Старый 07.03.2013, 21:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А по-моему вполне допустимо
Ох печалька случится с читанием юникода таким макаром
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.03.2013, 00:32   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Ох печалька случится с читанием юникода
Да, не подумал про юникод
Кстати, short int, вроде, 16 бит - не будет ли захвачено 2 символа (в ascii)?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.03.2013, 12:51   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не будет ли захвачено 2 символа (в ascii)?
Хм... Тут конечно я маху дал. А как в Сях 255 бит описать? Там же нет типа byte как в паскале.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.03.2013, 14:36   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Остаётся char (-128..127) или unsigned char (0..255). В си ведь все равно там будет храниться число, а не буква, как в паскале (может неправильно выразился - при выводе со спецификатором d будет выведено число), правда, придётся вычитать 48, чтобы хранились 0 и 1, так как считать сразу 0 или 1, как число, вроде не получится.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не понятно почему, но строки не записываются в файл Trinock Общие вопросы C/C++ 5 11.11.2011 23:03
Имя файла вместо пути (Delphi) ChEaTeR-abc Помощь студентам 2 13.07.2010 16:39
не записываются данные по указанному адресу s2dentishe Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 27.05.2010 14:42
Данные записываются в бд не в том порядке, в котором надо. Krasi PHP 13 12.03.2010 11:40