Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
1

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

22.10.2013, 14:59. Показов 2175. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,
Если имеется текстовый файл:
----------------------------------------------
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, но НЕУЖЕЛИ нет такого способа средствами С++???
Ведь есть же форматный вывод!
Значит должен же быть и форматный ввод?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 14:59
Ответы с готовыми решениями:

ListBox: как сделать считывание строки?
Не могу разобраться в ListBox Подскажите как сделать считывание строки... Например у меня в лист...

Считывание из одной строки. Как сделать из нескольких?
#include "stdafx.h" #include <iomanip> #include <iostream> #include <conio.h> #include...

пытаюсь сделать реализацию через считывание из файла кол-ва чисел, i,но незнаю как сделать реализацию из файла в массив и сортировки.
В файле input.txt находится неизвестное количество вещественных чисел в интервале . Выцапарать их...

Как сделать маску в TextBox
Доброго времени суток. Подскажите как сделать при вводе пробел через каждые 3 цифры в textbox,...

6
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.10.2013, 15:10 2
C++
1
2
3
int a, b;
char c;
read_file >> a >> c >> b;
1
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
22.10.2013, 15:20 3
Это не код,а белиберда.Приведи ВЕСЬ код,а не его отрывок.
0
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
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
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
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);
...
1
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
22.10.2013, 16:00 6
Цитата Сообщение от Solomka Посмотреть сообщение
А если по мимо цифр будут встречаться и текстовые переменные с типом char[] (тип string было решено по заданию не использовать)
1010203;тестовое;21065
принцип аналогичный
1
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
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 минут
???
0
24.10.2013, 08:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2013, 08:37
Помогаю со студенческими работами здесь

Как сделать маску по изображению?
Картинка/маска, например:

Как сделать маску, для номера
Добрый день уважаемые, подскажите, пожалуйста, как реализовать маску, по тому виду как на картинке?...

Как сделать управляемую маску свертки
Здравствуйте, как сделать управляемую маску свертки(для обработки изображения) чтоб можно было...

Как сделать маску только с определенных сторон?
Как добавить маску на мувиклип только с определенных сторон? Например фаску, только сверху и справа...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru