Заблокирован
|
||||||
1 | ||||||
Можно ли в массив чаров считать строку полностью?12.09.2012, 12:10. Показов 3497. Ответов 19
Метки нет (Все метки)
У меня получается считать только первое слово, понимаю что есть функция getline() и еще я какую-то похожую видел, но желательно без этих средств обойтись, как-то бы компилятор убедить в массив считывать пока до конца введенной строчки не доползет....
0
|
12.09.2012, 12:10 | |
Ответы с готовыми решениями:
19
Считать символы из вектора в массив чаров Как полностью считать текстовый файл в массив символов? Массив строк как массив указателей на массивы чаров Очистить массив чаров |
12.09.2012, 12:18 | 3 | |||||
Строки из потока читаются до первого разделителя (пробел, табуляция, перевод строки).
Чтобы получить всю строку, используй std::cin::getline(). Что за странный метод вывода строки? Чем не угодило:
1
|
Заблокирован
|
|
12.09.2012, 12:34 [ТС] | 4 |
Она же вроде с библиотеки <string> а мне нельзя ее использовать, потому что в книжке идут примеры строк в стиле Си, или в <cstring> библиотеке getline() тоже есть? , да а насчет вывода эт я просто так смотрел если строчка будет переполнять массив что станет, поэтому и условия такие дурацкие
Добавлено через 3 минуты например массив из 10 чаров, ввожу литерал из 20 символов , а вывод до 100 чаров, ну и там получается "строка1 до 10" *ужасные знаки** "строка2 после 10" ***ужасные знаки **** Добавлено через 2 минуты А вообще то странно, происходит переполнение массива, а прога продолжает дальше считывать символы. как так? правда ошибка на экран вылазит, но это ничего
0
|
12.09.2012, 12:38 | 5 |
cin.getline() из библиотэки потоков ввода вывода С++ и его объявления (а может и определения) покоятся в <iostream>, который ты подключил
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.09.2012, 12:39 | 6 |
AnreyKazakov, std::cin.getline() а не std::getline(). Находится он в istream.
1
|
Заблокирован
|
|
12.09.2012, 13:03 [ТС] | 7 |
Тогда я совсем запутался...
Язык программирования С++. Вводный курс. 4-е изд. (Стенли Липпман)[2007] , стр 106 Цитирую "Класс string обладает дополнительный вспомогательной функцией ввода-вывода" getline() И причем я всегда объявлял его как std::getline, и компилятор понимал всегда....
0
|
12.09.2012, 13:23 | 8 | |||||
От Си осталось std::gets(), можешь её попробовать.
А глобальная функция std::getline работает с std::string.
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
12.09.2012, 13:25 | 9 |
AnreyKazakov, открою небольшой секрет - cin, cout, cerr и clog - это объекта классов std::istream и std::ostream. У класса std::istream есть элемент-функция getline() ( std::istream::getline()). В качестве параметров она принимает указатель на char, размер и символ-ограничитель ( по-умолчанию - '\n' ). Так же в заголовочном файле <string>, есть функция std::getline(), перегруженная для ввода в объекты класса std::string. Она в свою очередь принимает в качестве параметров ссылку на объект класса std::istream, ссылку на объект класса std::string и символ-ограничитель.
Добавлено через 1 минуту Герц, нет такой функции, есть только std::istream::get().
1
|
12.09.2012, 13:42 | 10 | |||||
Какой такой? std::istream::getline? Ты сам описываешь её в своем сообщении. std::getline так же есть.
http://www.cplusplus.com/refer... m/getline/ъ http://www.cplusplus.com/reference/string/getline/ Пожалуйста:
1
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
|
12.09.2012, 13:45 | 11 |
Герц, std::gets()
1
|
12.09.2012, 13:46 | 12 |
Есть такая функция. Я четко сказал, что это наследие от C.
http://liveworkspace.org/code/... 5f0072b1af
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
12.09.2012, 13:52 | 13 |
Герц, извиняюсь, перепутал, думал какая то борландовская. В любом случае она устарела, абсолютно не контролируемая. Не нужно ее использовать.
1
|
Герц
|
12.09.2012, 13:56
#14
|
Не по теме: Человек сказал, что ему нужно использовать C строки и никаких <string> :-)
1
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
12.09.2012, 13:58 | 15 |
Герц, это не повод использовать данную функцию. Для этого есть istream::getline() ( если нужно что бы символ-ограничитель отбрасывался ) и istream::get() ( если нужно что бы символ-ограничитель остался в потоке ).
1
|
Заблокирован
|
|||||||||||
12.09.2012, 14:59 [ТС] | 16 | ||||||||||
Спасибо всем, в общем переписал вот так:
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
12.09.2012, 15:10 | 17 |
Правильно. Если не хватает размера, то надо расширять массив. И всё это уже есть в std::string.
1
|
154 / 138 / 34
Регистрация: 23.05.2009
Сообщений: 275
|
||||||
12.09.2012, 15:12 | 18 | |||||
Можно собезьянничать:
1
|
Заблокирован
|
||||||
12.09.2012, 15:27 [ТС] | 19 | |||||
А можно во время считывания вот в этом месте
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
12.09.2012, 16:21 | 20 |
Вызвать метод gcount() сразу же после getline(), он скажет, сколько байт было реально считано и записано. (Естессно, их будет не больше 999 + один нулевой в конце — в итоге тысяча, передаваемая как аргумент в getline.) Учтите, что '\n' в конце, если лимит в 999 символов не наступит раньше, читается из потока, но не пишется в строку (и не входит в значение gcount()). Всё, что осталось в потоке свыше 999 символов, там и останется. Можно достать следующим getline().
0
|
12.09.2012, 16:21 | |
12.09.2012, 16:21 | |
Помогаю со студенческими работами здесь
20
Можно ли считать с консоли строку по шаблону? Можно ли с помощью JS считать get-строку? считать строку чисел в массив Считать строку в динамический массив Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |