|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.01.2012, 20:24 | #1 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Как преобразовать элемент массива типа char в int?
Тут столкнулся с проблемой, что при считывании строки из входного файла и записи этой строки в массив типа char, при попытке присвоить значение элемента массива к переменной типа int , я получаю не совсем то что нужно.
вот кусок программки Код:
но в консоль выводиться почему-то не 3, а 51 , я догадываюсь что это из-за смены типа, но как его правильно поменять - не доходит ( или как считать из файла сразу в инт?) и еще вопросик: как getline'ом считывать строки последовательно? я как не пробовал - постоянно первую строку читает , а вторую не хочет. Последний раз редактировалось neonakaneya; 02.01.2012 в 20:29. |
02.01.2012, 20:32 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
потому что вы выводите код символа, а не значение записаное в него.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.01.2012, 20:36 | #3 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Если от (int) '0' отнять 48, то получится 0. Если от (int) '3' отнять 48, то получится 3. Если от (int) '4' отнять 48, то получится 4. Если от (int) '9' отнять 48, то получится 9. А как ты пробовал? |
|
02.01.2012, 20:52 | #4 | |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Цитата:
а на счет гетлайна - пробовал в цикле for , ибо по заданию нужно считать N следующих строк(ну и правильно их обработать , а у меня даже считать их не получается) |
|
02.01.2012, 20:59 | #5 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
В цикле можно по разному пробовать. Но поскольку я не телепат, и понятия не имею, чего именно вы делали, а конкретный код вы не предоставили, то ничем помочь не могу.
|
02.01.2012, 21:06 | #6 |
Пользователь
Регистрация: 02.01.2012
Сообщений: 19
|
Извиняюсь что сразу код не скинул , но все , проблема уже решена, оказывается я в условии цикла указал неверное значение, и поэтому на консоль ничего не выводилось(т.к. последняя строка во входном файле - 4ая, а в цикле считывалась 5ая пустая) , это меня и смутило
|
02.01.2012, 21:13 | #7 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Опускаются, смотрят - человек. Пасет коров в поле. Холмс кричит ему: - мы гдее???? А мужик, подумал-подумал и кричит в ответ: - на воздушном шаре! Холмс поворачивается к Ватсону, и говорит: - этот человек - программист. А мы - в России. - но как вы догадались, Холмс?! - элементарно, Ватсон! Во-первых, прежде чем ответить, этот человек подумал. Во-вторых, ответ его абсолютно точный. В третьих - такой же точный, как и бесполезный. А в-четвертых, только в России программисты пасут коров. А теперь случай из реальной жизни: подходит студент к программисту, и спрашивает: "У меня что-то не работает! Почему это может быть?" А программист ему отвечает: "наверное, что-то не правильно". Как видишь, ответ программиста абсолютно точный. И такой же бесполезный. Мораль: когда имеешь дело с программированием, будь конкретен. Какой вопрос - такой и ответ. |
|
03.01.2012, 11:40 | #8 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
neonakaneya
при попытке присвоить значение элемента массива к переменной типа int , я получаю не совсем то что нужно. потому что ты делаешь не совсем то что нужно. ifstream fin(...); std::string s; std::getline(fis, s); std::stringstream ss(s); int a, b, c; ss >> a >> b >> c;
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
03.01.2012, 14:13 | #9 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Магия!
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
03.01.2012, 14:20 | #10 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
эм.
char c=3; int c1; c1=c-'0'; //c1=3; как то так оО |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнение массива типа char. | KuckaMAXHATKA | Общие вопросы C/C++ | 1 | 15.02.2011 18:07 |
Конверт int массива в char массив | Raptor | Помощь студентам | 14 | 23.03.2010 00:50 |
Как перевести значение ячейки массива char в int в Си | SASS | Общие вопросы C/C++ | 1 | 10.12.2009 14:44 |
почему элемент массива char* весит 4 байта? | Познающий | Помощь студентам | 6 | 09.12.2009 21:06 |
Запись числа типа инт в ячейку двумерного массива типа char | AxenicX | Помощь студентам | 1 | 25.09.2009 00:35 |