ifstream无法读取文件

时间:2015-11-17 18:21:57

标签: c++ fstream

我一直在尝试在Visual Studio 2015中创建一个控制台应用程序,它将文本文件读取为字符串,然后输出字符串,但我遇到了一些问题。

我尝试的第一件事就是关注cplusplus.com教程:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    string line;
    ifstream myfile("test.txt");
    if (myfile.is_open())
    {
        while (getline(myfile, line))
        {
            cout << line << '\n';
        }
        myfile.close();
    }

    else cout << "Unable to open file";
    return 0;
}

程序没有打开文件。

尽管有多次互联网搜索并尝试了20多种不同的方法,但我仍然无法使我的程序正常运行。我能够达到的最好结果是一排毫无意义的0。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

您所做的错误不会发出有用的错误消息。而不是打印&#34;无法打开文件&#34;,让计算机告诉你为什么它不能打开文件。例如:

#include <iostream>                                                                                
#include <fstream>                                                                                 
#include <string>                                                                                  

using namespace std;                                                                               

int main( int argc, char **argv)                                                                   
{                                                                                                  
    string line;                                                                                   
    const char * path = argc > 1 ? argv[1] : "test.txt";                                           
    ifstream myfile(path);                                                                         
    if (myfile.is_open()) {                                                                        
        myfile.close();                                                                            
    } else {                                                                                       
        perror(path);                                                                              
    }                                                                                              
    return 0;                                                                                      
}