2012-04-19 3 views
1

У меня есть этот код до сих пор:C++: Реверс строки в текстовом файле с использованием стека

#include <stdio.h> 
#include <stdlib.h> 
#include <fstream> 
#include <iostream> 
#include <string> 
#include <stack> 
using namespace std; 

int main() { 


ifstream in; 
in.open("example.txt"); 

ofstream outfile; 
outfile.open("out.txt"); 

stack<string> lines; 
string temp; 
while(getline(in, temp)) 
    lines.push(temp); 
while(!lines.empty()) 
    outfile << lines.pop() << endl; 

in.close(); 
outfile.close(); 

return 0; 
} 

Мой вопрос, почему я получаю ошибку компиляции из «не подходит для оператора < < в OUTFILE» ,

+0

дополнительный кредит - как хорошо делает этот код работать, если ваш файл имеет 100M линии? –

+0

HA, а не домашнее задание. У меня есть .bmp, который я преобразовал в двоичный, но он перевернулся. Мне просто нужно было перевернуть его, прежде чем я начну преобразовывать двоичный код в шестнадцатеричный, а затем поставлю его в массив для экрана, изображение которого продолжается. маленький экран, поэтому эффективность не имеет значения. – LiverpoolFTW

ответ

7

pop()void, а не std::string. Используйте top() и затем pop():

while(!lines.empty()) 
{ 
    outfile << lines.top() << endl; 
    lines.pop(); 
} 
+0

AHHH, спасибо. Поэтому я изменил его на lines.top(), а затем i lines.pop() после этого. – LiverpoolFTW

Смежные вопросы