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

Как сделать считывание строки через маску в С++? - C++

Восстановить пароль Регистрация
 
Solomka
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 34
22.10.2013, 14:59     Как сделать считывание строки через маску в С++? #1
Здравствуйте,
Если имеется текстовый файл:
----------------------------------------------
1010203 21065
----------------------------------------------

И есть код на С++ который читает этот файл:
==============================================
C++
1
2
3
4
5
6
7
fstream outputFile;
 
ifstream read_file ("input.txt");
int a , b ;
read_file >> a >> b;
read_file.close();
return 0;
==============================================
то про выполнении программы правильно определяется a=1010203, b=21065.

А вот, если я хочу чтобы он тоже так определял, но числа в файле разделялись точкой с запятой.
То есть файл имел вид:
----------------------------------------------
1010203;21065
----------------------------------------------

Но если применить код:
==============================================
...
C++
1
read_file >> a >> ";" >> b;
...
==============================================
то выдается ошибка компиляции.

А так она не определяет правильно значения:
==============================================
...
C++
1
read_file >> a >> b;
...
==============================================

Как можно считывать переменные из файла используя маску?
В инетеренете не видно таких примеров.
Я знаю как это можно сделать средствами Си с помощью оператора fscanf, но НЕУЖЕЛИ нет такого способа средствами С++???
Ведь есть же форматный вывод!
Значит должен же быть и форматный ввод?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 14:59     Как сделать считывание строки через маску в С++?
Посмотрите здесь:

C++ Как сделать считывание клавиши с клавиатуры в реальном времени?
C++ пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки.
Как сделать так, что бы длинна строки сама менялась при вводе строки? C++
C++ Как эффективнее всего реализовать считывание нужной строки?
Как сделать обновление текста строки через определенное время? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.10.2013, 15:10     Как сделать считывание строки через маску в С++? #2
C++
1
2
3
int a, b;
char c;
read_file >> a >> c >> b;
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
22.10.2013, 15:20     Как сделать считывание строки через маску в С++? #3
Это не код,а белиберда.Приведи ВЕСЬ код,а не его отрывок.
Solomka
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 34
22.10.2013, 15:38  [ТС]     Как сделать считывание строки через маску в С++? #4
Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
3
int a, b;
char c;
read_file >> a >> c >> b;
А если по мимо цифр будут встречаться и текстовые переменные с типом char[] (тип string было решено по заданию не использовать)

1010203;тестовое;21065
Matan!
13 / 13 / 1
Регистрация: 31.05.2013
Сообщений: 206
Записей в блоге: 2
Завершенные тесты: 1
22.10.2013, 15:48     Как сделать считывание строки через маску в С++? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream outputFile;
 
    ifstream read_file ("input.txt");
    int a, b;
    char c = ';';
    read_file >> a >>  b;
    read_file.close();
    cout << "a= " << a << c << "b= " << b << endl;
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Solomka Посмотреть сообщение
А если по мимо цифр будут встречаться и текстовые переменные с типом char[] (тип string было решено по заданию не использовать)

1010203;тестовое;21065
Тебе нужно прочитать файл или только вставить ";"?
Если прочитать файл,то
...
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
...
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
22.10.2013, 16:00     Как сделать считывание строки через маску в С++? #6
Цитата Сообщение от Solomka Посмотреть сообщение
А если по мимо цифр будут встречаться и текстовые переменные с типом char[] (тип string было решено по заданию не использовать)
1010203;тестовое;21065
принцип аналогичный
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 08:37     Как сделать считывание строки через маску в С++?
Еще ссылки по теме:

Считывание через ifstream строки состоящей из чисел и символов из файла C++
Как сделать шаблон на считывание неизвестного типа данных? C++
C++ Считывание из одной строки. Как сделать из нескольких?

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

Или воспользуйтесь поиском по форуму:
Solomka
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 34
24.10.2013, 08:37  [ТС]     Как сделать считывание строки через маску в С++? #7
Цитата Сообщение от Jupiter Посмотреть сообщение
принцип аналогичный
Если тестовый файл "input.txt" содержит:
HTML5
1
 1010203;тестовая переменная;21065
А код выполняемой программы представляет из себя:
C++
1
2
3
4
5
6
7
8
9
10
11
fstream outputFile;
 
    ifstream read_file ("input.txt");
 
    int a , b ;
    char d;
    char word[19];
    char dd;
 
    read_file >> a >> d >> word >> dd >> b ;
    read_file.close();
то компилируется программа нормально.
и переменные a и d определяются нормально.
а вот переменная word определяется наполовину нормально.
половина элементов этого массива заполняется нормально: "тестовая ", а дальше пусто.
а переменная dd определяется как "п".
и соответственно переменная b определяется неправильно как "-858993460".
видимо проблема с пробелами...

как можно обойти эту ситуацию с пробелами?

Добавлено через 1 час 57 минут
Если даже так сделать,...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int _tmain(int argc, _TCHAR* argv[])
{
    fstream outputFile;
 
    ifstream read_file ("input.txt");
 
    int a , b ;
    char d;
    char word[19];
    char dd;
 
    read_file >> a >> d >> string("") >> word >>d >> b ;
    read_file.close();
    return 0;
}
то тогда переменные тоже не правильно определяются:

a=1010203
b=-858993460
d=';'
word="переменная;21065"

Добавлено через 3 часа 25 минут
В итоге всё даже печальнее...
если текстовый файл содержит:
HTML5
1
 1010203;тестовая_переменная;21065
код выглядит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int _tmain(int argc, _TCHAR* argv[])
{
    fstream outputFile;
 
    ifstream read_file ("input.txt");
 
    int a , b ;
    char d;
    char word[19];
    char dd;
 
    read_file >> a >> d >> word >> dd >> b ;
    read_file.close(); 
    return 0;
}
то часть значений переменных всё равно не правильно определяется:
a =1010203 (int)
b =-858993460 (int)
d = ';' (char)
dd = 'М' (char)
word = "тестовая_переменная" (char [19])

Добавлено через 16 часов 40 минут
???
Yandex
Объявления
24.10.2013, 08:37     Как сделать считывание строки через маску в С++?
Ответ Создать тему
Опции темы

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