#include
#include
#include
using namespace std;
void CreateTrain() {
setlocale(LC_ALL, "rus");
string repeat1 = "y";
while (repeat1 == "y") {
ofstream Train("Train.dat",ios_base::binary|ios::app);
if (Train.is_open()) {
cout place;
cin >> number;
cin >> time;
string fileinput = "Place: " + place + " Train number: " + number + " Arrival time: " + time;//Совмещение всех данных
Train.write((char*)&fileinput, sizeof(fileinput));//добавление данных в бинарный файл
Train
C/C++
Нужно найти в бинарном файле введенные пользователем данные.
В бинарном файле найти данные введенные пользователем с консоли и вывести все строки где встречаются эти данные. Я сделал проверку строк но при чтение программа выдает не предложения, а какие-то знаки.
Нельзя сохранять в бинарном виде любую информацию, содержащую ссылки и указатели. Это тоже самое что на свидание отправить свою фотографию.
"В бинарном файле найти данные... и вывести все строки..." - это постановка задачи? Её автору нужно померить температуру.
Не знаю, какие вы строки надеетесь найти в бинарном файле, но навскидку:
А вот прикольный способ вывести кучу рандомного мусора в стандартный вывод или попасть на GPF/SIGSEGV, в зависимости от платформы:
Симметричная операция чтения:
Смысл затеи открывать файл как бинарный, а потом делать
Хоть почитайте Википедию, что такое бинарный файл, и что такое текстовый. И заодно об указателях, взятии адреса и разыменовании что-нибудь почитайте. И о том, как устроен std::string, и чем он отличается от char *.
И замечание общего вида: C++ даёт программисту много свободы. Вы можете взять указатель от объекта, привести его к указателю на другой тип, нагадить во внутреннее представление объекта, а компилятор вам и слова не скажет. Где-то во время выполнения, совсем в другом месте, всплывёт труднообнаруживаемая ошибка. Чтобы не попадать в дурацкие ситуации, нужно ясно представлять себе, что делает каждая строчка кода. Если вы не в состоянии это делать, то C++ - не ваш язык. Возьмите Java или Python и пишите наугад, а там компилятор или додумает за вас, или подскажет, где ошибка.
Не знаю, какие вы строки надеетесь найти в бинарном файле, но навскидку:
Train.write((char*)&fileinput, sizeof(fileinput));
Это - полная чепуха. Вы, конечно, получите таким образом настоящий бинарный файл (в том смысле, что он будет полон непечатаемых символов), но вряд ли эти данные удастся потом использовать каким-либо разумным образом.А вот прикольный способ вывести кучу рандомного мусора в стандартный вывод или попасть на GPF/SIGSEGV, в зависимости от платформы:
printf((char*)&file);
Симметричная операция чтения:
Train.read((char*)&file, sizeof(file));
также приведёт вас в заботливые руки коредампа или GPF при попытке что-то прочитать из строки. Хотя, может, дело обойдётся рандомными закорючками. Раньше, когда терминалы пищали при выводе символа с ASCII кодом 7, сразу было слышно, когда кто-то неосторожно плюхнул бинарник в терминал.Смысл затеи открывать файл как бинарный, а потом делать
while (getline(Train,line))
тоже ускользает от моего понимания.Хоть почитайте Википедию, что такое бинарный файл, и что такое текстовый. И заодно об указателях, взятии адреса и разыменовании что-нибудь почитайте. И о том, как устроен std::string, и чем он отличается от char *.
И замечание общего вида: C++ даёт программисту много свободы. Вы можете взять указатель от объекта, привести его к указателю на другой тип, нагадить во внутреннее представление объекта, а компилятор вам и слова не скажет. Где-то во время выполнения, совсем в другом месте, всплывёт труднообнаруживаемая ошибка. Чтобы не попадать в дурацкие ситуации, нужно ясно представлять себе, что делает каждая строчка кода. Если вы не в состоянии это делать, то C++ - не ваш язык. Возьмите Java или Python и пишите наугад, а там компилятор или додумает за вас, или подскажет, где ошибка.
Похожие вопросы
- Как записать данные в бинарный файл C++
- C++ добавить элемент, который введет пользователь в одномерный динамический массив
- Как достать числа из бинарного файла и работать с ними? Си
- C++. Как найти 3 самых больших числа из ряда чисел введенных пользователем?
- Запись и чтение двумерного массива в бинарный файл
- Даны две обыкновенные дроби(введено пользователем). Написать программу которая делит первую дробь на вторую.
- Есть структура, где много различных полей, в т. ч. типа string. Как потоком читать из файла в структуру данные? Возникает
- Работа с матрицами. Нужно найти сумму элементов каждой строки. Помогите пожалуйста ????????
- Бинарные данные C++. Как быстрее?
- Найти сумму цифр чисел, записанных в файл