我编写了一个快速的C ++程序,要求用户输入输入文本文件和输出文本文件。然后程序应该对左边距文件中的行进行编号。但是,我似乎无法让它正常工作,它编译得很好,但不会像它应该的那样对行进行编号。我认为这是我的逻辑错误。我对C ++中的文件i / o也不太熟悉,因为我现在只是使用旧式的教科书来学习它。
这是文件:
#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
#include <cstdio>
using namespace std;
int main(void)
{int i = 0 , num = 1;
string inputFileName;
string outputFileName;
string s;
ifstream fileIn;
ofstream fileOut;
char ch;
cout<<"Enter name of input file: ";
cin>>inputFileName;
cout<<"Enter name of output file: ";
cin>>outputFileName;
fileIn.open(inputFileName.data());
fileOut.open(outputFileName.data());
assert(fileIn.is_open() );
assert(fileOut.is_open() );
while (!(fileIn.eof()))
{ch=fileIn.get();
if (ch=='\n') num++;
fileOut << num << "\n";
s.insert(i,1,ch); //insert character at position i
i++;
}
fileOut << s;
fileIn.close();
fileOut.close();
return 0;
}
如果有人能指出我正确的方向或给我一些提示,我会永远感激。
答案 0 :(得分:4)
int i = 0;
string line;
while (getline(infile, line))
{
outfile << (i++) << " " << line << "\n";
}