|
laura
|
|
Файловый ввод-вывод31.05.2011, 17:49. Показов 3630. Ответов 10
Метки нет (Все метки)
Проблема вот в чем: надо несколько (пусть будет 2) разных файлов перемешать и записать в один. в файле-результате должны встречаться все строки из исходных файлов в случайном порядке.
Как это сделать на С или С++? Заранее благодарна за помощь
|
|
| 31.05.2011, 17:49 | |
|
Ответы с готовыми решениями:
10
Файловый ввод-вывод Файловый ввод С++ в С++ Builder
|
|
Silver
|
|
| 06.06.2011, 09:15 | |
|
Если файлы-источники текстовые, то удобно использовать
класс CStdioFile. Использование очень простое. Если это еще интересно, то могу накидать пример. |
|
|
paradise
|
|
| 06.06.2011, 12:11 | |
|
1. Потоки.
#include <iostream> 2. Используй C++ Runtime Library #include <cstdio> ----- Какой бы из способов ты не выбрал - используй справку и голову. |
|
|
paradise
|
|
| 06.06.2011, 12:13 | |
|
в предыдущем посте не был учтен пол
![]() 'не выбрал' читать как 'не выбрала' |
|
|
0 / 0 / 8
Регистрация: 07.12.2010
Сообщений: 46
|
||||||
| 06.06.2011, 15:03 | ||||||
|
Привет.
Можно попробовать так:
0
|
||||||
|
Silver
|
||||||
| 07.06.2011, 13:05 | ||||||
|
А вот примерчик от MFC (упрощен, без обработки
ошибок и т.п.)
|
||||||
|
laura
|
||||||||||||||||
| 07.06.2011, 20:48 | ||||||||||||||||
|
Спасибо большое всем за ответы!
А вот как сделать если не два файла надо смешивать, а неизвестное заранее количество? Это функция должна быть с переменным числом параметров (параметры-имена файлов)? тогда для переменных-потоков надо массив заводить? Может как-то проще можно? np_msn, а почему потоки объявляются как принадлежащие std?
![]() да, кстати, вот это не работает:
|
||||||||||||||||
|
paradise
|
|
| 08.06.2011, 11:26 | |
|
> Это функция должна быть с переменным числом параметров
> (параметры-имена файлов)? Можно разными способами. Например в качестве параметра передать: vector<std::string>& names > тогда для переменных-потоков надо массив заводить? Можно открывать по одному потоку и считывать все строки в вектор. Я думаю np_msn использовал два потока (f1,f2) для наглядности. Можно было бы обойтись одним т.к. ввод последовательный (сначала из первого файла, потом из второва). > Может как-то проще можно? не делать ничего ![]() > np_msn, а почему потоки объявляются как принадлежащие std? ifstream и ofstream обьявлены в std. Попробуй убрать std из объявлений ![]() > и еще вот эта сторка непонятна: > std::vector<std::string> line; > если не сильно напрягаю, поясните ![]() Вектор строк Имя не очень подходещее - лучше lines. На тему 'что такое вектор' можно почитать Б.Страуструпа или google.com ![]() > да, кстати, вот это не работает: > if (!f1.is_open() || !f2.is_open() || !f3.is_open()) > по-моему надо : > if(!f1||!f2||!f3) Это одно и тоже
|
|
|
0 / 0 / 8
Регистрация: 07.12.2010
Сообщений: 46
|
|
| 08.06.2011, 11:27 | |
|
Привет.
Цитата laura: 'почему потоки объявляются как принадлежащие std' Потому что они описаны в пространстве имен std. Можно в начале файла написать: using namespace std; тогда не нужно будет явно указывать префикс std. Цитата laura: 'и еще вот эта сторка непонятна: std::vector<std::string> line;' line - это вектор (массив), элементами которого являются строки std::string, т.е. фактически массив строк. Цитата laura: 'да, кстати, вот это не работает: if (!f1.is_open() || !f2.is_open() || !f3.is_open()) по-моему надо : if(!f1||!f2||!f3)' У меня стоит Borland C++ Builder 5.01. В нем работают оба варианта. По поводу множесва входных файлов: 1. можно читать имена файлов из файла shuffle_string(std::string file_name, std::string out_file); где file_name - имя файла, где хранятся имена входных файлов, out_file - имя выходного файла. 2. можно передавать список файлов например через vector или list: shuffle_string(std::vector<std::string> file_name, std::string out_file); 3. можно в одной строке передать все имена файлов, разделенные пробелами или другими разделителями (например: '1.txt 2.txt 3.txt') shuffle_string(std::string files, std::string out_file); Наиболее простой (по-моему) для реализации 2-й способ. Удачи.
0
|
|
|
paradise
|
|
| 08.06.2011, 11:27 | |
|
'из второва' читать как 'из второго'
|
|
|
paradise
|
|
| 08.06.2011, 11:28 | |
|
np_msn, на секунду опаздал
|
|
| 08.06.2011, 11:28 | |
|
Помогаю со студенческими работами здесь
11
Заменить в программе, переводящую строку в двоичный код, консольный ввод/вывод на файловый ввод/вывод Поменять консольный ввод-вывод на файловый ввод-вывод Файловый ввод-вывод, ввод с клавиатуры и обработка массива структур Реализовать вывод массива объектов типа Student на консоль (файловый ввод/вывод) Поиск в массиве структур по заданному полю и вывод в алфавитном порядке (файловый ввод/вывод) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|