Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
#1

Функция для считывания строки - C++

29.01.2013, 21:17. Просмотров 513. Ответов 1
Метки нет (Все метки)

Требуется написать функция для считывания строки, используя динамическое выделения памяти? Как это по лучше сделать подскажите? Было бы неплохо привести пример кода.

Добавлено через 24 минуты
Вот попробывал написать функцию для динамического считывания строки. Функция возвращает указатель, который надо будет потом во внешней функции delete[]. Скажите, пожалуйста, что в этой функции не так??? Как написать её получше и покомпактнее???

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
char * Read(void)
{
    char *str, *copyPtr;
    int count = 0;
    int size = 80;
    char ch;
        
    str = new char[size + 1];
    fflush(stdin);
    
    ch = cin.get();
    while(ch != '\n'){
        if(count == size){
            str[count] = 0;
            copyPtr = new char[size + 1];
            strcpy(copyPtr, str);
            delete []str;
 
            size *= 2;
            str = new char[size + 1];
            strcpy(str, copyPtr);
            delete []copyPtr;
        }
 
        str[count] = ch;
        count++;
        ch = cin.get();
    }
    
    str[count] = 0;
    return str;
}
Добавлено через 4 минуты
Вот немного переделал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
char * Read(void)
{
    const int MAX_STR = 2048;
    char *str, *copyPtr;
    int count = 0;
    int size = 80;
    char ch;
        
    str = new char[size + 1];
    fflush(stdin);
    
    ch = cin.get();
    while(ch != '\n')
    {
        if(count >= MAX_STR) 
            return NULL;
 
        if(count == size){
            str[count] = 0;
            copyPtr = new char[size + 1];
            strcpy(copyPtr, str);
            delete []str;
 
            size *= 2;
            str = new char[size + 1];
            strcpy(str, copyPtr);
            delete []copyPtr;
        }
 
        str[count] = ch;
        count++;
        ch = cin.get();
    }
    
    str[count] = 0;
    return str;
}
Добавлено через 16 минут
up...........

Добавлено через 14 минут
up....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 21:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция для считывания строки (C++):

Функция для считывания нажатых клавиш. - C++
Подскажите какую нибудь функцию которая бы считывала все нажатия клавиш? Например чтоб запустить приложение WIN32 и чтоб она считывала...

Функция считывания из файла для map - C++
в файле задана последовательность ключ-точка(map<string,MYPOINT>). Помогите, пожалуйста, написать функцию считывания из файла, а то везде...

Нужна небуферизированная функция для считывания одного символа - C++
Здавствуйте! Мне нужна небуферизированная функция для считывания одного символа. В Window был getch(), теперь нужно найти аналог. ...

Функция для считывания символа из файла в переменную wchar_t - C++
Вот такой вот в общем код. Какой функцией можно считывать посимвольно символы из файла в переменную wchar_t? get(s) не подходит,...

Есть ли в С++ функция для считывания информации с файла с подробной настройкой? - C++
Есть ли в С++ функция для считывания информации с файла с подробной настройкой?Мне нужно будет потом их записать в массив. Ну вот например...

Ошибка при использовании getline для считывания строки из файлового потока - C++
Ошибка находится в 24 строке на точке. Код, подобный этому (а в этой строке фактически 1 в 1 одинаковый) я разбирал в институте. Видимо...

1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
29.01.2013, 22:18 #2
Ну можно size <<= 1; вместо size *= 2;
Побитовый сдвиг работает крайне быстро по сравнению с умножением или делением (да даже сложением)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2013, 22:18
Привет! Вот еще темы с ответами:

Функция считывания с клавиатуры - C++
подскажите пожалуйста функцию которая будет ждать ввода с клавиатуры при этом не останавливая работы цикла

Универсальная функция считывания переменных из бинарного файла - C++
Подскажите, написал запись в бинарный файл переменных, не могу считать, точнее функция должна быть универсальная под любой тип считывания ...

Функция seekq, вместо повторного считывания файла (txt) - C++
Всем привет, ребят. Я тут новый и это мой первый пост :) И вопрос у меня вот какой.. Мне нужно переписать этот код так, чтобы считывание...

Узнать размер строки до её считывания - C++
Возник вопрос связанный с выделением памяти под массив символов. Задача: считать строку в массив символов с выделением динамической...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.