2013-10-13 5 views
0

Я хочу открыть файл для чтения, а затем вывести то, что находится в этом .txt-файле, любые предложения по моему коду?Проблема с чтением/выводом файлов

string process_word(ifstream &word){ 
    string line, empty_str = ""; 
    while (!word.eof()){ 
     getline(word, line); 
     empty_str += line; 
    } 
    return empty_str; 
} 

int main(){ 
    string scrambled_msg = "", input, output, line, word, line1, cnt; 
    cout << "input file: "; 
    cin >> input; 
    ifstream inFile(input); 
    cout << process_word(inFile); 
} 
+0

'empty_str + = line' существу неопределенное поведение, потому что вы не проверяете вы, разрешено ли читать' line'. –

ответ

2

Вместо:

while (!word.eof()) { 
    getline(word, line); 
    empty_str += line; 
} 

сделать:

while (std::getline(word, line)) { 
    empty_str += line; 
} 

и было бы также целесообразно, чтобы дать переменные более подходящие имена.

0

Ваша функция может быть упрощена:

#include <iterator> 

std::string process_word(std::ifstream& word) 
{ 
    return std::string{std::istream_iterator<char>{word}, 
         std::istream_iterator<char>{}}; 
} 

int main() 
{ 
    string input; 
    std::cin >> input; 

    std::ifstream inFile(input); 
    std::cout << process_word(inFile); 
} 
+0

Я думаю, что тело вашего 'process_word', которое в настоящее время стоит, требует поддержки C++ 11, правильно? – LihO

+0

Это не компилируется, C++ 11 или нет. –

+0

@LihO Да. это – 0x499602D2

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