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

Скопировать из файла часть символов - C++

Восстановить пароль Регистрация
 
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
22.09.2013, 13:36     Скопировать из файла часть символов #1
Требуется скопировать часть файла(txt) с позиции n до позиции m в поток и посчитать в этой части количество цифровых символов.
не могу написать с позиции до позиции.
хотелось бы со строчками работать
вот набросок
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
#include <fstream>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
 
int main()
{   
    string s;
    int kol=0;
    char temp;
    ifstream ifs("1.txt");
    
    if(!ifs) {
        cerr << "File error." << endl;
        return 1;
    }
    ifs.unsetf(ios::skipws);
    while(ifs >> temp)
        s += temp;
    
    cout << s << endl;
    //int p=s.end();
     for(int i=0;i<s.end();i++)
     {
         if(isdigit(s[i]))
         {
             kol++;
         }
         cout<<kol;
     }
 
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 13:36     Скопировать из файла часть символов
Посмотрите здесь:

Скопировать часть строки C++
C++ Скопировать часть строки
C++ Как скопировать часть строки до определенного символа?
Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? C++
C++ Скопировать текст из одного файла в другой, добавляя порядковый номер строки и количество символов в ней
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 13:56     Скопировать из файла часть символов #2
После открытия файла, передвиньте курсор (seekg) в позицию n. При каждом считывании увеличивайте n. Выход из чтения, когда n станет равна m, или конец файла.

Добавлено через 2 минуты
И лучше: ifs.get(temp);
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 681
22.09.2013, 14:03     Скопировать из файла часть символов #3
Либо считай данные в char. И записывай от n до m.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 14:15     Скопировать из файла часть символов #4
Цитата Сообщение от alsav22 Посмотреть сообщение
После открытия файла, передвиньте курсор (seekg) в позицию n. При каждом считывании увеличивайте n. Выход из чтения, когда n станет равна m, или конец файла.

Добавлено через 2 минуты
И лучше: ifs.get(temp);
И если нужно только посчитать, то зачем в строку помещать считанные символы? Можно, всё это, на лету делать.
fomin101
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 3
22.09.2013, 14:16     Скопировать из файла часть символов #5
Написать программу, которая предлагает пользователю ввести символ, определяет, является ли он цифрой и выводит результат в консоль. Помогите через if тока ифы начили учить (
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 14:19     Скопировать из файла часть символов #6
fomin101, а тему создать?
fomin101
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 3
22.09.2013, 14:39     Скопировать из файла часть символов #7
я создал никто не помогает (
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
22.09.2013, 14:46  [ТС]     Скопировать из файла часть символов #8
C++
1
2
3
4
5
6
int n;
    cin>>n;
    ifs.seekg(n);
    ifs.unsetf(ios::skipws);
    while(ifs >> temp)
        s += temp;
а как закончить в m ?

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
И если нужно только посчитать, то зачем в строку помещать считанные символы? Можно, всё это, на лету делать.
. Требуется скопировать часть файла с позиции n до позиции m в поток и посчитать в этой части количество цифровых символов.
нужно ведь изначально в поток.
поменять сринг на char ?
=\
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 15:14     Скопировать из файла часть символов #9
Цитата Сообщение от pmipmi Посмотреть сообщение
Требуется скопировать часть файла с позиции n до позиции m в поток
В поток же, не в строку. Можно сразу вести подсчёт.
Цитата Сообщение от pmipmi Посмотреть сообщение
а как закончить в m ?
Как-то так:
C++
1
2
3
4
5
6
while(ifs >> temp)
{
        s += temp;
       ++n;
       if (n == m) break; 
}

Не по теме:

Добавлено через 7 минут

Цитата Сообщение от fomin101 Посмотреть сообщение
я создал никто не помогает (
И где создали?

pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
22.09.2013, 16:20  [ТС]     Скопировать из файла часть символов #10
спасибо огромное
теперь мои символы находятся в s ? string s ?
C++
1
2
3
4
5
6
7
8
 for(int i=0;i<m-n;i++)
     {
         if(isdigit(s[i]))
         {
             kol++;
         }
         cout<<kol;
     }
написал,чтоб так считалось количество цифр.. что-то не выходит
и почему нельзя i<s.end() ; ?!
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 16:57     Скопировать из файла часть символов #11
Цитата Сообщение от pmipmi Посмотреть сообщение
и почему нельзя i<s.end() ; ?!
i не итератор.
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
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{   
    ifstream ifs("1.txt");
 
    if(!ifs) 
    {
        cerr << "File error." << endl;
        return 1;
    }
    
    int n, m;
    do
    {
        (cin >> n >> m).get();
    } while (n < 0 || m < 0 || m <= n);
    
    ifs.seekg(n);
 
    int kol = 0;
    char temp;
    while(ifs.get(temp))
    {
        if(isdigit(temp))
        {
            kol++;
            cout << temp << ' ';
        }
        ++n;
        if (n == m) break; 
    }
 
    cout << endl << kol << endl;
    
    cin.get();
    return 0;
}
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
22.09.2013, 17:15  [ТС]     Скопировать из файла часть символов #12
Цитата Сообщение от alsav22 Посмотреть сообщение
i не итератор.
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
#include <fstream>
#include <iostream>
using namespace std;
 
int main()
{   
    ifstream ifs("1.txt");
 
    if(!ifs) 
    {
        cerr << "File error." << endl;
        return 1;
    }
    
    int n, m;
    do
    {
        (cin >> n >> m).get();
    } while (n < 0 || m < 0 || m <= n);
    
    ifs.seekg(n);
 
    int kol = 0;
    char temp;
    while(ifs.get(temp))
    {
        if(isdigit(temp))
        {
            kol++;
            cout << temp << ' ';
        }
        ++n;
        if (n == m) break; 
    }
 
    cout << endl << kol << endl;
    
    cin.get();
    return 0;
}
так не работает
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 17:26     Скопировать из файла часть символов #13
Цитата Сообщение от pmipmi Посмотреть сообщение
так не работает
А у меня работает...
В файле:
as dddsss 13 sdd
sd4 3 4 45 sdd
dddddd4
Миниатюры
Скопировать из файла часть символов   Скопировать из файла часть символов  
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
23.09.2013, 08:45  [ТС]     Скопировать из файла часть символов #14
ОГРОМНОЕ СПАСИБО !
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,214
Завершенные тесты: 3
16.06.2015, 10:59     Скопировать из файла часть символов #15
Обновлю тему. Заменять символы, уже находящиеся в файле, представляется возможным? Конкретно мне нужно числа заменить, возможно, некоторые символы удалить. Они через пробел написаны.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2015, 13:38     Скопировать из файла часть символов
Еще ссылки по теме:

C++ Сгенерировать файл и заменить часть встречающихся символов на плюс
Скопировать текст между символов C++
C++ Отрезать во всех строках часть строки после четырех символов

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

Или воспользуйтесь поиском по форуму:
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
16.06.2015, 13:38     Скопировать из файла часть символов #16
Файл переписывать нужно.
Yandex
Объявления
16.06.2015, 13:38     Скопировать из файла часть символов
Ответ Создать тему
Опции темы

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