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

деление строки с файла - C++

Восстановить пароль Регистрация
 
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
12.12.2013, 14:55     деление строки с файла #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
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <fstream>
#include <cctype>
#include <string.h>
#include <string>
#include <cstdlib>
using namespace std;
 
int main()
{
    char bufer[80];
    ifstream in("test.txt");// в файле две строки:
                            // Anisimov J. m 1940
                            // Durova I. z 1980
                            // я хочу разбить эти строки на несколько char[] массивов
                            // там где только буквы и знаки препинания записывалось
                            // в char name[] , а где цифры записывалось в char dob[]
                            //
while(in.getline(bufer, 80))
    {
       int d = 0;  int i = 0;
      char name[80]; char dob[80];
       while( i != strlen(bufer)){
          while(!isdigit(bufer[i]))
          {
              name[i] = bufer[i];
               i++;
          }
 
 
          while(isdigit(bufer[i]))
          {
              dob[d] = bufer[i];
              d++; i++;
          }
 
 
 
       }
       cout <<   name << " " << dob <<endl;
 
    }
 
    return 0;
}
еще бы потом char dob[] в переменную int перевести пожалуйста
а то вот что я наколдовал какие то кавычки непонятные выводит
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
12.12.2013, 17:10     деление строки с файла #2
А сделать нужно именно так как вы описали или можно предложить другие варианты.
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
12.12.2013, 18:27  [ТС]     деление строки с файла #3
спасибо за ответ но уже вроде как разобрался, оказалось ваще не то что нужно, просто в структуру надо было данные с файла вводить, перемудрил. решил по другому:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct rabotnik{
string f, i, o;
int denroz, datapost;
 
};
 
istream& read(istream& is, rabotnik& r)
{
    is >> r.f >> r.i >> r.o >> r.denroz >> r.datapost;
    return is;
}
int main()
{
    vector<rabotnik> vec;
    rabotnik rab;
    ifstream in("test.txt");
    while(!in.eof()){
    read(in, rab);
    vec.push_back(rab);
 
    }
Добавлено через 26 минут
Цитата Сообщение от egor2116 Посмотреть сообщение
А сделать нужно именно так как вы описали или можно предложить другие варианты.
если есть еше варианты - в студию
как бы сделать исключение. Вот например на входе такие данные:
Anisimov J. m 1970 1987
Durova I. z 1980 2000
Solovjov J. m 1940 1961
а если
случайно изменить на
Anisimov J. m 19b70 1987
Durova I. z 1980 2000
Solovjov J. m 1940 1961
то есть при попытке чтения инт значения прочитает букву
у меня просто виснет прога
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.12.2013, 18:41     деление строки с файла #4
Цитата Сообщение от jurok_85 Посмотреть сообщение
решил по другому:
Всё хорошо, но только если за последней строкой нет '\n', а, если файл создавался из кода, то он, наверняка, будет. Поэтому лучше добавить (иначе в векторе окажется повтор последнего чтения):
C++
1
2
3
4
5
6
while(!in.eof())
{
     read(in, rab);
     if (in)
         vec.push_back(rab);
}
Добавлено через 3 минуты
Цитата Сообщение от jurok_85 Посмотреть сообщение
а если
случайно изменить на
Обработку правильного ввода лучше сделать при создании файла.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
13.12.2013, 11:06     деление строки с файла #5
если есть еше варианты - в студию
Хотел вам предложить создать структуру, и записывать(читать) всю структуру целиком и тогда не будет необходимости парится с разделением данных.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
13.12.2013, 11:33     деление строки с файла #6
мне вот интересно, а как-нибудь так можно читать?)
C++
1
fscanf("%s%s%d",nam,dob,x);
Yandex
Объявления
13.12.2013, 11:33     деление строки с файла
Ответ Создать тему
Опции темы

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