Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
29.01.2013, 21:17     Функция для считывания строки #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....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2013, 21:17     Функция для считывания строки
Посмотрите здесь:

C++ Функция считывания из файла для map
C++ Функция для считывания нажатых клавиш.
C++ Ошибка при использовании getline для считывания строки из файлового потока
C++ Нужна небуферизированная функция для считывания одного символа
C++ Универсальная функция считывания переменных из бинарного файла
C++ Есть ли в С++ функция для считывания информации с файла с подробной настройкой?
C++ Функция для считывания символа из файла в переменную wchar_t
Функция считывания с клавиатуры C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
29.01.2013, 22:18     Функция для считывания строки #2
Ну можно size <<= 1; вместо size *= 2;
Побитовый сдвиг работает крайне быстро по сравнению с умножением или делением (да даже сложением)
Yandex
Объявления
29.01.2013, 22:18     Функция для считывания строки
Ответ Создать тему
Опции темы

Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru