Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/34: Рейтинг темы: голосов - 34, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 5

Как считывать только числа из текстового файла?

12.10.2017, 18:18. Показов 6575. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо считать из текстового файла числа в массив. но если в файле будут еще и буквы, то функция не будет работать. как запретить чтение букв?
Например:
если в файле: 11 sadsa 3 asdasd 2 1 asda, то в массив передать: 11 3 2 1
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
int *inputf(ifstream &f,int &count,char s[40])
{
 f.open (s);
 if (!f)
    {
        cout << "File not found\n";
        system("pause");
    }
 int a;
 int i = 0;
 do
 {
    if (f >> a)
        {
            count++;
        }
        else
        {
            f.clear();
            f.ignore(1,' ');
        } 
 } while (!f.eof());
 
 f.clear(); 
 f.seekg(0); 
 int *arr = new int[count];
 for (int i = 0; i<count; i++)
 {
    
    f >> arr[i];    
 }
 f.close();
    return arr;
}
заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.10.2017, 18:18
Ответы с готовыми решениями:

Считывать из текстового файла и записывать в новый файл только строки, содержащие двузначные числа
Написать программу, которая считывает из текстового файла и записывает в новый файл только строки, содержащие двузначные числа. Вот что...

Считывать с текстового файла только цифры
К примеру есть текстовый файл Hello 2 World 35 и мне нужно считать с него только цифры 2,3, 5 и при этом их приплюсовать после что бы было...

Как считывать int из текстового файла?
есть файл текст.txt, который содержит запись &quot;1&quot;. Как считывать эту единицу в виде int?

7
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.10.2017, 18:38
Слова считывай и пробуй преобразовывать в числа.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 5
12.10.2017, 18:55  [ТС]
как это сделать?
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
12.10.2017, 19:20
http://ru.cppreference.com/w/c... tring/stol
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
12.10.2017, 19:38
Цикл do работает? Используй его второй раз. Вместо 15-й строки сделай добавление в массив.
0
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 5
12.10.2017, 23:03  [ТС]
nmcf, я же считаю в count длину массива
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.10.2017, 00:10
Второй такой же цикл добавь. После подсчёта длины.
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
13.10.2017, 14:07
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <sstream>
#include <fstream>
#include <iterator>
#define is_digit(c) ((c) >= '0' && (c) <= '9')
 
size_t get_array(int*& arr, std::istream& _in){
    int    d;
    size_t j, n = 0;
    std::istreambuf_iterator<char> i(_in), e;
    while(i != e){
        while((i != e) && !is_digit(*i))
            ++i;
 
        if(i != e)
            ++n;
 
        while((i != e) && is_digit(*i))
            ++i;
    }
 
    if(!n || ((arr = new (std::nothrow) int[n]) == NULL))
        return 0;
 
    _in.seekg(0, _in.beg);
    i = _in;
    j = 0;
    while(i != e){
        while((i != e) && !is_digit(*i))
            ++i;
        if(i == e)
            break;
 
        d = 0;
        while((i != e) && is_digit(*i)){
            d = d*10 + (*i - '0');
            ++i;
        }
        arr[j++] = d;
    }
    return n;
}
 
int main(void){
    int*   arr = NULL;
    size_t cnt;
 
    //для примера ввод из строки
    char s[] = "11 sadsa 3 asdasd 2 1 asda 2012";
    std::istringstream sp(s);
    cnt = get_array(arr, sp);
 
/*  ввод из файла
    std::ifstream fp("file.txt");
    cnt = get_array(arr, fp);
    fp.close();
*/
    for(size_t i = 0; i < cnt; ++i)
        std::cout << arr[i] << ' ';
 
    //...
 
    if(arr != NULL)
        delete[] arr;
    std::cin.get();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2017, 14:07
Помогаю со студенческими работами здесь

Как считывать каждые 2 символа из текстового файла?
Всем привет))) Ребят помогите пожалуйста!!! Кароч нужно написать прогу которая берет некий hex файл и переводит данные из ASCII в bin и...

Как считывать строки из текстового файла и записывать их в файл?
До этого на java не программил, но щас потребовалось сделать это именно на этом языке. Желательно проще.

Как считывать из текстового файла, пропуская первую строку?
Имею такой код: procedure TF_knopka.fZagrClick(Sender: TObject); // Закрузка данных var ft:TextFile; ...

Вывести на экран только числа из созданного Вами на диске текстового файла, содержащего буквы и числа
Требуется вывести на экран только числа из созданного Вами заранее на диске текстового файла, содержащего буквы и числа.

Вывести из текстового файла только числа
вывести из текстового файла только числа


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru