>

파일 순서를 바꿔서 다른 파일로 출력해야합니다. 예를 들어

입력 :

hello
this is a testing file again
just    so    much  fun

예상 출력 :

just    so    much  fun
this is a testing file again 
hello

이것은 현재 코드이며, 줄의 순서와 각 단어의 문자 순서를 역순으로 인쇄합니다.

현재 :

nuf  hcum    os    tsuj
 niaga elif gnitset a si siht
olleh
int print_rev(string filename, char c){
  ifstream inStream (filename);
  ofstream outStream;
  inStream.seekg(0,inStream.end);
  int size = inStream.tellg();
  outStream.open("output.txt");
  for (int j=1; j<=size; j++){ 
    inStream.seekg(-j, ios::end);
    c=inStream.get();
    outStream << c;
  }
  inStream.close();
  outStream.close();
  return 0;
}

  • 답변 # 1

    전체 파일을 문자 단위로 되돌립니다. 원하는 것은 각 줄을 개별적으로 읽은 다음 줄 순서를 바꾸는 것입니다.

    라인 스택은 이것에 대한 좋은 선택 인 것 같습니다 :

    int printRev(string filename)
    {
        stack<string> lines;
        ifstream in(filename);
        string line;
        while (getline(in, line))
        {
            lines.push(line);
        }
        ofstream out("output.txt");
        while (!lines.empty())
        {
            out << lines.top() << endl;
            lines.pop();
        }
        return 0;
    }
    
    

관련 자료

  • 이전 c++ - hpp를 사용할 때와 h + cpp를 사용할 때?
  • 다음 compilation - 플래그를 사용하면 컴파일 할 수 없습니다 -fast