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

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

Войти
Регистрация
Восстановить пароль
 
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
#1

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

12.12.2013, 14:55. Просмотров 196. Ответов 5
Метки нет (Все метки)

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

Определить функцию, которая, игнорируя исходное деление файла на строки, переформатирует его - C++
помогите, нужна помощь, вот условие: Определить функцию, которая, игнорируя исходное деление файла на строки, переформатирует его, разбивая...

Деление строки на слова - C++
Нужно, чтобы когда пользователь вводил что-то типа &quot;integer a = 1&quot;, создавалась переменная a со значением 1. Так вот как сделать такое...

Деление строки на подстроки - C++
Приветсвую. Вопрос такого плана, в php есть очень удобная функция explode. Её смысл в следующем: $data =...

Деление строки на подстроки - C++
написать программу разбивающую строки на подстроки в зависимости от введенного к (количество подстрок) на языке С, не знаю как сделать,...

Деление строки заданным символом - C++
Есть код #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Russian&quot;); string...

Деление строки на слова в файле - C++
Здравствуйте! Надо разделить строки на слова и каждое слово поместить в массив слов. Когда читаю 1-ю строку файла, всё хорошо, но когда...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
12.12.2013, 17:10 #2
А сделать нужно именно так как вы описали или можно предложить другие варианты.
1
jurok_85
241 / 224 / 77
Регистрация: 21.02.2013
Сообщений: 519
Завершенные тесты: 1
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
то есть при попытке чтения инт значения прочитает букву
у меня просто виснет прога
0
alsav22
5419 / 4815 / 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 Посмотреть сообщение
а если
случайно изменить на
Обработку правильного ввода лучше сделать при создании файла.
1
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
13.12.2013, 11:06 #5
если есть еше варианты - в студию
Хотел вам предложить создать структуру, и записывать(читать) всю структуру целиком и тогда не будет необходимости парится с разделением данных.
0
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,998
13.12.2013, 11:33 #6
мне вот интересно, а как-нибудь так можно читать?)
C++
1
fscanf("%s%s%d",nam,dob,x);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 11:33
Привет! Вот еще темы с ответами:

Получить третий файл, содержащий чётные строки первого файла и нечётные строки второго файла - C++
Даны два файла, получить третий, содержащий чётные строки первого файла и нечётные строки второго файла. Вообще не имею понятия, как...

Деление строки на части по знаку препинания - C++
Есть строка, состоящая из нескольких слов. string ss = &quot;Автор Название стоимость жанр&quot;; При помощи этого кода она делится на слова: ...

Задача про деление яблок (целочисленное деление) - C++
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++. Заранее спасибо! N школьников делят K яблок...

Деление Wav-файла на два канала - C++
Реализовать функцию разделяющую входной wav файл на каналы (на два выходных файла) с возможностью уменьшения амплитуд любого из каналов. ...


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

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

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