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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Rashmash
2 / 2 / 0
Регистрация: 04.04.2011
Сообщений: 75
#1

string, getline() чтение строк - C++

06.07.2012, 02:42. Просмотров 2015. Ответов 1
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста написать часть кода. Задача состоит в том, чтобы прочитать данные из строк, отдельные поля дат отделяются ';'. Вот что надо прочитать:
Vasya; Komsomola 12 123435211
Kostya; Lenina 45; 666222111
Masha; Goglya 28; 999333111
Borya; I.P.Vinogradova; 123444777
В случае если строка задана неправильно(как в 1 случае отсутсвует ';' между Komsomola 12 и 123435211), то её надо просто пропустить и начать читать новую строку. Первые данные надо сохранить в поле name, вторые в address, 3 в number. Вот что я написал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    string line; // целая одна строка
    string name, address, number; //соотвественно
    
    int x; // считает кол-во проходов while();
    size_t found1, found2, found3; //позиция ';' в string line
    size_t pos=0;
 
    while(getline(cin, line)){
    x +=1;
    found1=line.find(';', pos);// найдет первую ';' и вернет позицию.
    if (int(found1)==-1){ //если не нашел ';' то надо перейти на след строку.
        // ВОТ ЗДЕСЬ не знаю как сделать чтобы он сразу переходил на следующую строку.
    } else
    name=line.substr(pos, found1); // вот здесь просто вырежет из line от первой позиции, 
                                                      //до первого появления ';'.
    
    found2=line.find(';',found1+1);
    address=line.substr(found1+1, found2-found1-1);
    
    found3=line.size();
    number=line.substr(found2+1,found3-found2-1);
    
    }
Скажите пожалуйста как сделать так, если в случае ошибки он сразу переходил на новую строку, есть ли какая нибудь функция? Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 02:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос string, getline() чтение строк (C++):

Getline и string - C++
Надо как-то считать вводимый текст в строку полностью, до ввода энтера. Как оказалось getline со строкой работать нивкакую не хочет, даже...

getline в string - C++
как сделать getline в string. ну чтобы считывало в string до нажатия enter с пробелами

string И getline - C++
string name; cout <<"Name -> "; getline(cin,name); cout <<"OK, "<<name; 2 раза требует ввод...

Getline чтение из файла - C++
#include <iostream> using std::cout; using std::cin; using std::endl; using std::ios; using std::cerr; #include <fstream> ...

Не работает. cin.getline(string,200); - C++
Я создаю проект. Все работает кроме одного cin.getline(string,200), почему? Когда запускаю этот Task3 в отдельном проекте все есть, но...

Чтение с текстового файла getline()-ом - C++
Приветствую Всех! У меня возникла проблема с getline() Я должен прочитать из текстового файла строки по порядку в цикле...

1
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 03:26 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   found1 = line.find(';');   // найдет первую ';' и вернет позицию.
 
    found2 = line.rfind(';');   // найдет последнюю ';' и вернет позицию.
 
    if ( found1 != found2 )  { //если  позиции не равны 
       
    name = line.substr( pos, found1 ); // вот здесь просто вырежет из line от первой позиции, 
                                                      //до первого появления ';'.
    
    address = line.substr( found1 + 1, found2 - found1 - 1);
    
    found3 = line.size( );
 
    number = line.substr( found2 + 1, found3 - found2 - 1);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 03:26
Привет! Вот еще темы с ответами:

Чтение из файла: getline() не работает - C++
У меня такая ситуация: Есть два файла: words1.txt и cities-source.txt. Прилагаются. Берем первую строку из words1 и начинаем...

Чтение из файла, не используя getline - C++
Вот ВЕСЬ код: #include <iostream> #include <string> #include <fstream> #include <iomanip> #include <Windows.h> using...

В string через getline() попадает предыдущий пробел - C++
Почему-то во втором и последующем объекте в переменной стринг пусто. Подозреваю, что туда передаётся нажатие клавиши Enter. #include...

getline, string, запись в файл, русский язык - C++
#include <iostream> using std::ios; using std::cin; using std::cout; using std::endl; #include <string> using std::string; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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