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

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

Войти
Регистрация
Восстановить пароль
 
 
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
#1

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

22.09.2013, 13:36. Просмотров 742. Ответов 15
Метки нет (Все метки)

Требуется скопировать часть файла(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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2013, 13:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скопировать из файла часть символов (C++):

Скопировать часть строки и часть удалить - C++
1. Удалить из строки ее часть с заданной позиции и заданной длины. 2. Скопировать часть строки с определенной позиции и определенной...

Скопировать текст из одного файла в другой, добавляя порядковый номер строки и количество символов в ней - C++
Помогите с задачей, пожалуйста!!!:) спасибо заранее! Описать функцию Lines(FileIn, FileOut), которая считывает из входного файла...

Скопировать часть строки - C++
Здравствуйте. Имеется 2 строки AnsiString str1 = &quot;123456&quot;; AnsiString str2; Как скопировать часть строки str1 в строку...

Скопировать часть строки - C++
Как мне скопировать часть строки с элемента a по элемент b?

Как скопировать часть строки до определенного символа? - C++
Допустим, пользователь вводит с клавиатуры строку. Необходимо скопировать часть строки до какого-то определенного символа и поместить ее в...

Как скопировать часть массива WCHAR в массив BYTE? - C++
Пытаюсь зашифровать строку в AES. wTextIn - исходный текст wTextOut - шифрованный byte bDataBlocks = {0}; // Буффер WCHAR *...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 13:56 #2
После открытия файла, передвиньте курсор (seekg) в позицию n. При каждом считывании увеличивайте n. Выход из чтения, когда n станет равна m, или конец файла.

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

Добавлено через 2 минуты
И лучше: ifs.get(temp);
И если нужно только посчитать, то зачем в строку помещать считанные символы? Можно, всё это, на лету делать.
0
fomin101
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 3
22.09.2013, 14:16 #5
Написать программу, которая предлагает пользователю ввести символ, определяет, является ли он цифрой и выводит результат в консоль. Помогите через if тока ифы начили учить (
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 14:19 #6
fomin101, а тему создать?
0
fomin101
0 / 0 / 0
Регистрация: 22.09.2013
Сообщений: 3
22.09.2013, 14:39 #7
я создал никто не помогает (
0
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 ?
=\
0
alsav22
5420 / 4816 / 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 Посмотреть сообщение
я создал никто не помогает (
И где создали?

1
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() ; ?!
0
alsav22
5420 / 4816 / 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;
}
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;
}
так не работает
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.09.2013, 17:26 #13
Цитата Сообщение от pmipmi Посмотреть сообщение
так не работает
А у меня работает...
В файле:
as dddsss 13 sdd
sd4 3 4 45 sdd
dddddd4
1
Миниатюры
Скопировать из файла часть символов   Скопировать из файла часть символов  
pmipmi
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 44
23.09.2013, 08:45  [ТС] #14
ОГРОМНОЕ СПАСИБО !
0
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,283
Завершенные тесты: 3
16.06.2015, 10:59 #15
Обновлю тему. Заменять символы, уже находящиеся в файле, представляется возможным? Конкретно мне нужно числа заменить, возможно, некоторые символы удалить. Они через пробел написаны.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2015, 10:59
Привет! Вот еще темы с ответами:

Скопировать часть одного вектора в другой, в обратном порядке - C++
как скопировать часть одного вектора в другой, при этом отсчет с конца V1 = 1,2,3,4,5 v2 должен ровняться 5,4,3

Std::copy как скопировать часть строки массива byte? - C++
Вот из этой строки: BYTE pbHash; Нужно скопировать содержимое с 0й по 15ю ячейку, в эту строку: BYTE bAesKey; Так будет? ...

Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? - C++
strncpy(itog,str,size+1); cout&lt;&lt;itog; itog вообще не выводится Добавлено через 2 минуты Вот код. #include &lt;iostream&gt; ...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.06.2015, 10:59
Ответ Создать тему
Опции темы

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