VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件

时间:2020-12-21 12:14:45
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>

using namespace std;

int main()
{
ifstream sfile("book");
if (!sfile)
{
cerr << "无法打开文件" << endl;
system("pause");
return -1;
}

string line;
vector<string> word;
while (getline(sfile, line))
{
word.push_back(line);
}
sfile.close();
//for (auto it :word)
vector<string>::const_iterator it = word.begin();
while(it!=word.end())
{
istringstream line_str(*it);
string words;
while (line_str >> words)
cout << words << " ";
cout << endl;
++it;
}
system("pause");
return 0;
}


调试也总失败,之前总是无法进入调试,重装后,没有任何语法错误可以进入调试状态,只要有错误就无法执行调试,即便点击调试,也是直接执行,显示错误信息,不是进入调试状态。我是从官网下载的社区版

7 个解决方案

#1


"book.txt"

#2


光标置于 ifstream sfile("book"); 这行,然后按F5,会进入调试,并停在此行。

ifstream用于读文件,如果文件不存在,不会自动创建。
可以把ifstream换成ofstream,此时如果文件不存在,会自动创建。


book后面是否有后缀名均可,和这个问题无关。


如果对您有帮助,请采纳答案好吗,谢谢!

#3


VS2015+windows64位,可以调试
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");

#4


把book.txt拷贝到源文件所在的目录下
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件
这是运行效果
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件

#5


楼上都给出了解释和回答,我补充一点解决问题的一个思路:

 if (!sfile)
    {
        int nErr = GetLastError(); // 断点调试,查看错误时的错误码然后方便你分析解决问题。
        cerr << "无法打开文件" << endl;
        system("pause");
        return -1;
    }

#6


前面抱歉没有看清楚您的工程类型,

        // 1
        ifstream in("out.txt");
        if (!in.is_open())
        {
            cout << "Error opening file"; exit(1);
        }

        // 2
        ofstream out("out.txt");
        if (out.is_open())
        {
            out << "This is a line.\n";
            out << "This is another line.\n";
            out.close();
        }
        // 3
        //ifstream in("out.txt");
        //if (!in.is_open())
        //{
        //    cout << "Error opening file"; exit(1);
        //}
        //return 0;


刚刚实际测试了一下,发现之所以一直无法打开的缘故是没有在目录下面找到对应的.txt文件。可以测试上面的代码,如果使用代码块 2、3的话就不会出现这类问题。
详细 C++文件读写详解(ofstream,ifstream,fstream),感谢大佬的无私。
其实这种问题也在常理之中,写的时候没有的话创建OK,读的话总不至于创建一个读吧。

#7


这个是文件路径的问题,我也遇到过。在IDE就读不出来,直接去debug目录运行就正常。
因为你在IDE中运行程序的时候,程序的根目录不是debug目录。
你需要指定完整的目录:

char filename[100] = "E:\\VS_work\\GitHub\\Extract_PD_RAW\\Extract_PD_RAW_From_Pure_RAW\\Debug\\test.raw";
ifstream sfile(filename);

注意要加两条斜杠。
如果可行,请采纳哟~

#1


"book.txt"

#2


光标置于 ifstream sfile("book"); 这行,然后按F5,会进入调试,并停在此行。

ifstream用于读文件,如果文件不存在,不会自动创建。
可以把ifstream换成ofstream,此时如果文件不存在,会自动创建。


book后面是否有后缀名均可,和这个问题无关。


如果对您有帮助,请采纳答案好吗,谢谢!

#3


VS2015+windows64位,可以调试
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");

#4


把book.txt拷贝到源文件所在的目录下
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件
这是运行效果
VS2015 中C++ 流读取工程目录下的.txt文件总是无法打开文件

#5


楼上都给出了解释和回答,我补充一点解决问题的一个思路:

 if (!sfile)
    {
        int nErr = GetLastError(); // 断点调试,查看错误时的错误码然后方便你分析解决问题。
        cerr << "无法打开文件" << endl;
        system("pause");
        return -1;
    }

#6


前面抱歉没有看清楚您的工程类型,

        // 1
        ifstream in("out.txt");
        if (!in.is_open())
        {
            cout << "Error opening file"; exit(1);
        }

        // 2
        ofstream out("out.txt");
        if (out.is_open())
        {
            out << "This is a line.\n";
            out << "This is another line.\n";
            out.close();
        }
        // 3
        //ifstream in("out.txt");
        //if (!in.is_open())
        //{
        //    cout << "Error opening file"; exit(1);
        //}
        //return 0;


刚刚实际测试了一下,发现之所以一直无法打开的缘故是没有在目录下面找到对应的.txt文件。可以测试上面的代码,如果使用代码块 2、3的话就不会出现这类问题。
详细 C++文件读写详解(ofstream,ifstream,fstream),感谢大佬的无私。
其实这种问题也在常理之中,写的时候没有的话创建OK,读的话总不至于创建一个读吧。

#7


这个是文件路径的问题,我也遇到过。在IDE就读不出来,直接去debug目录运行就正常。
因为你在IDE中运行程序的时候,程序的根目录不是debug目录。
你需要指定完整的目录:

char filename[100] = "E:\\VS_work\\GitHub\\Extract_PD_RAW\\Extract_PD_RAW_From_Pure_RAW\\Debug\\test.raw";
ifstream sfile(filename);

注意要加两条斜杠。
如果可行,请采纳哟~