Не работает вывод файл в c++, при этом предусмотрел закрытие и открытие потоков непосредственно во время чтения и записи соответственно
Новый файл просто не создается
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define forn(i, n) for(ll i=0; i<n; ++i)
#define ff first
#define ss second
#define pb push_back
ifstream ifile;
ofstream ofile;
string finame, foname;
vector<string> get_text(){
ifile.open(finame, ios_base::in);
vector<string> res;
char ch;
string cur="";
if(ifile){
while(ifile.get(ch)){
if(ch=='\n'){
res.pb(cur);
cur="";
} else{
cur+=ch;
}
}
}
ifile.close();
return res;
}
vector<pair<string, ll>> get_ans(const vector<string> &text){
vector<pair<string, ll>> res;
forn(i, text.size()){
string cur="";
bool f=false;
forn(j, text[i].size()){
if(text[i][j]=='"'){
if(f){
res.pb({cur, i+1});
cur="";
f=false;
} else{
f=true;
}
} else{
if(f) cur+=text[i][j];
}
}
}
return res;
}
void print_ans(const vector<pair<string, ll>> &ans){
ofile.open(foname, ios_base::out);
forn(i, ans.size()){
ofile << i+1 << "\t" << ans[i].ff << "\t" << ans[i].ss << '\t';
ofile << '\n';
}
ofile.close();
}
void get_args(ll argcc, vector<string> argvv, string &finame, string foname){
forn(i, argcc-1){
string argg=argvv[i];
switch(argg[1]){
case 'I':
finame=argg.substr(2, argg.size());
break;
case 'O':
foname=argg.substr(2, argg.size());
break;
}
}
if(finame.empty()){
cout << "Enter input file\n" << flush;
cin >> finame;
}
if(foname.empty()){
cout << "Enter output file\n" << flush;
cin >> foname;
}
}
int main(int argc, char *argv[]){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
vector<string> argvv;
forn(i, argc-1){
argvv.pb(argv[i+1]);
}
get_args(argc, argvv, finame, foname);
vector<string> text=get_text();
vector<pair<string, ll>> ans=get_ans(text);
print_ans(ans);
return 0;
}