|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.10.2010, 00:02 | #1 |
Пользователь
Регистрация: 23.10.2010
Сообщений: 17
|
Ввод произвольной строки в C++
Как в C++, считывать последовательность символов (как массив char) произвольной длины с помощью "cin>> "?
По моим предположениям: условие проверяет, не стал ли старый массив маловат для получаемой строки. Если маловат, то создаёт новый побольше, переносит элементы старого в него, уничтожает старый и называет этот новый массив по-старому. Потом новый символ добавляется в свежий удлинённый массив. Вот как написал я: #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { char c,*s=NULL,*t=NULL; int l=2; s=new char[l]; int j; for (int i=0;cin>>c;i++) { cin>>c; if (i>l-1) { l++; t=new char[l]; for (j=0;j<l-2;j++) t[j]=s[i]; delete s; s=t; t=NULL; } s[i]=c; } cout<<*s; return 0; } Но программа зацикливается на считывании. Условие выполнения цикла cin>>c нагуглил где-то. Объясняется там так: цикл выполняется, пока считывание успешно. Программа будет посимвольно считывать входной поток (по умолчанию - ввод с клавиатуры), пока не встретит признак конца файла. Для того, чтобы сообщить программе о завершении файла при вводе с клавиатуры необходимо нажать клавиши Ctrl-d. Может ошибки с указателями... |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Файловый Ввод-вывод и строки | coll3ctor | Общие вопросы C/C++ | 17 | 02.05.2010 11:02 |
ввод до конца строки. | ssi | Помощь студентам | 0 | 27.01.2010 09:47 |
Посимвольный ввод строки | Junk1E | Общие вопросы C/C++ | 8 | 14.12.2009 01:49 |
ввод строки! | Татяна | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 16.05.2009 17:53 |
Ввод строки с пробелами | Сергей089 | Помощь студентам | 15 | 24.04.2009 23:01 |