Całego nie wrzucam, w main jest wywołanie funkcji, kom013, oraz kom030 (ich nie wrzucam, gdyż wielkością są podobne do kom010, a różnią się tylko wypisaną informacją):
#include <fstream>
#include <iostream>
#include <conio.h>
#include <string.h>
#include <utility>
#include <string>
#include <stdio.h>
#include <time.h>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <Windows.h>
using namespace std;
void wyswietl();
void menu(int typ);
void menu();
void kom010();
void kom013();
void kom030();
void sprawdz();
int typ;
int main() {
wyswietl();
switch (typ) {
case 1: {
system("cls");
cout << "Komunikat 010\n";
kom010();
main();
break;
}
case 2: {
system("cls");
cout << "Komunikat 013\n";
kom013();
main();
break;
}
case 3: {
system("cls");
cout << "Komunikat 030\n";
kom030();
main();
break;
}
case 0: {
break;
}
default:
main();
}
}
void wyswietl() {
HANDLE kolor;
kolor = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kolor, 10);
system("cls");
cout << "Wybierz typ komunikatu:\n";
cout << "1 -> 010\n";
cout << "2 -> 013\n";
cout << "3 -> 030\n";
SetConsoleTextAttribute(kolor, 11);
cout << "\n::";
cin >> typ;
}
void kom010() {
fstream plik("010.txt", ios::in);
system("cls");
string line;
string TPITI[99], SEMOV[99], CDMAG[99], MODAM[99], TELAC[99], FIL10[99],
CNTER[99], NRVEN[99], COLLO[99], CDCOL[99], DESC1[99], DTMER[99],
VINNO[99], DADOC[99], NRFTF[99], CDVAL[99];
string PREIM[99], FLCEE[99], ENGIN[99], LNPRD[99], CDFOA[99], SRCAR[99],
PESLO[99], CDCLM[99], INSAM[99], FREAM[99], PESNE[99];
string HEADER, HEADR, HDRTPITI, HDRNTRAS, HDRNRECO, HDRCDMAG, HDRMITTE,
HDRDTTRX, HDRORTRX;
string DTBLE, TIME;
string UZUPEL;
time_t rawtime;
struct tm* timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80, "%Y%m%d%H%M%S", timeinfo);
string data(buffer);
string nowa;
DTBLE = data.substr(2, 6);
TIME = data.substr(8, 6);
string nazwa;
int rekordy = 0;
int koniec = 0;
int i = 0;
int linie = 0;
int ile = 0;
int loop = 0;
int licznik = 0;
string Rekord[99];
string wynik[99];
string wynik2[99];
do {
string line;
getline(plik, line);
string sprawdz;
sprawdz = line.substr(0, 3);
if (sprawdz = "010") {
linie = linie + 1;
}
} while (!plik.eof());
plik.close();
rekordy = linie - 1;
fstream plik3("010.txt", ios::in);
while (!plik3.eof()) {
getline(plik3, HEADR);
// cout<<"\n"<<HEADR<<"\n";
HDRTPITI = HEADR.substr(3, 5);
HDRNRECO = HEADR.substr(8, 5);
HDRCDMAG = HEADR.substr(13, 2);
HDRMITTE = HEADR.substr(15, 15);
HDRDTTRX = HEADR.substr(30, 6);
HDRORTRX = HEADR.substr(36, 6);
nazwa = "CAT" + HDRTPITI + ".txt";
for (int i = 0; i < rekordy; i++) {
getline(plik3, Rekord[i]);
// licznik=licznik+1;
// cout<<Rekord[i]<<"\n";
TPITI[i] = Rekord[i].substr(0, 3);
SEMOV[i] = Rekord[i].substr(3, 1);
CDMAG[i] = Rekord[i].substr(4, 2);
MODAM[i] = Rekord[i].substr(6, 15);
TELAC[i] = Rekord[i].substr(21, 6);
FIL10[i] = Rekord[i].substr(27, 13);
CNTER[i] = Rekord[i].substr(40, 12);
NRVEN[i] = Rekord[i].substr(52, 10);
COLLO[i] = Rekord[i].substr(62, 6);
CDCOL[i] = Rekord[i].substr(68, 3);
DESC1[i] = Rekord[i].substr(71, 15);
DTMER[i] = DTBLE;
VINNO[i] = Rekord[i].substr(92, 17);
DADOC[i] = DTBLE;
NRFTF[i] = Rekord[i].substr(115, 11);
CDVAL[i] = Rekord[i].substr(126, 3);
PREIM[i] = Rekord[i].substr(129, 11);
FLCEE[i] = Rekord[i].substr(140, 1);
ENGIN[i] = Rekord[i].substr(141, 18);
LNPRD[i] = Rekord[i].substr(159, 1);
CDFOA[i] = Rekord[i].substr(160, 6);
SRCAR[i] = Rekord[i].substr(166, 1);
PESLO[i] = Rekord[i].substr(167, 7);
CDCLM[i] = Rekord[i].substr(174, 3);
INSAM[i] = Rekord[i].substr(177, 17);
FREAM[i] = Rekord[i].substr(194, 17);
PESNE[i] = Rekord[i].substr(211, 7);
wynik[i] = "040" + SEMOV[i] + CDMAG[i] + MODAM[i] + TELAC[i] + DTMER[i] +
" " + DADOC[i] + VINNO[i] + LNPRD[i] + " \n";
}
int licznik = rekordy;
koniec = licznik + 1;
}
ile = (int)log10(koniec) + 1;
loop = 5 - ile;
const char* zapis = nazwa.c_str();
fstream plik2(zapis, ios::out);
plik2 << "HDR" << HDRTPITI << UZUPEL;
for (int i = 0; i < loop; i++) {
plik2 << "0";
}
plik2 << koniec << " CAT2W " << DTBLE << TIME << "\n";
for (int i = 0; i < rekordy; i++) {
// cout<<wynik[i];
plik2 << wynik[i];
}
}
chcę przerobić to tak, aby czas (funkcja pokazana wyżej) była w osobnej funkcji (którą się wywołuje), oraz zapis także był w innej funkcji (funkcja kom030 posiadazmienne string wynik[99], oraz string wynik2[99] a reszta posiada tylko jedną, co chciałbym w tym uwzględnić.
EDIT
Tą funkcje z pair normalnie się definiuje (chodzi mi o prototyp funkcji) ??