#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用于读文件,如果文件不存在,不会自动创建。
book后面是否有后缀名均可,和这个问题无关。
如果对您有帮助,请采纳答案好吗,谢谢!
ifstream用于读文件,如果文件不存在,不会自动创建。
可以把ifstream换成ofstream,此时如果文件不存在,会自动创建。
book后面是否有后缀名均可,和这个问题无关。
如果对您有帮助,请采纳答案好吗,谢谢!
#3
VS2015+windows64位,可以调试
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");
#4
把book.txt拷贝到源文件所在的目录下
这是运行效果
这是运行效果
#5
楼上都给出了解释和回答,我补充一点解决问题的一个思路:
if (!sfile)
{
int nErr = GetLastError(); // 断点调试,查看错误时的错误码然后方便你分析解决问题。
cerr << "无法打开文件" << endl;
system("pause");
return -1;
}
#6
前面抱歉没有看清楚您的工程类型,
刚刚实际测试了一下,发现之所以一直无法打开的缘故是没有在目录下面找到对应的.txt文件。可以测试上面的代码,如果使用代码块 2、3的话就不会出现这类问题。
详细 C++文件读写详解(ofstream,ifstream,fstream),感谢大佬的无私。
其实这种问题也在常理之中,写的时候没有的话创建OK,读的话总不至于创建一个读吧。
// 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目录。
你需要指定完整的目录:
注意要加两条斜杠。
如果可行,请采纳哟~
因为你在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用于读文件,如果文件不存在,不会自动创建。
book后面是否有后缀名均可,和这个问题无关。
如果对您有帮助,请采纳答案好吗,谢谢!
ifstream用于读文件,如果文件不存在,不会自动创建。
可以把ifstream换成ofstream,此时如果文件不存在,会自动创建。
book后面是否有后缀名均可,和这个问题无关。
如果对您有帮助,请采纳答案好吗,谢谢!
#3
VS2015+windows64位,可以调试
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");
另外,是不是要把ifstream sfile("book");改为ifstream sfile("book.txt");
#4
把book.txt拷贝到源文件所在的目录下
这是运行效果
这是运行效果
#5
楼上都给出了解释和回答,我补充一点解决问题的一个思路:
if (!sfile)
{
int nErr = GetLastError(); // 断点调试,查看错误时的错误码然后方便你分析解决问题。
cerr << "无法打开文件" << endl;
system("pause");
return -1;
}
#6
前面抱歉没有看清楚您的工程类型,
刚刚实际测试了一下,发现之所以一直无法打开的缘故是没有在目录下面找到对应的.txt文件。可以测试上面的代码,如果使用代码块 2、3的话就不会出现这类问题。
详细 C++文件读写详解(ofstream,ifstream,fstream),感谢大佬的无私。
其实这种问题也在常理之中,写的时候没有的话创建OK,读的话总不至于创建一个读吧。
// 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目录。
你需要指定完整的目录:
注意要加两条斜杠。
如果可行,请采纳哟~
因为你在IDE中运行程序的时候,程序的根目录不是debug目录。
你需要指定完整的目录:
char filename[100] = "E:\\VS_work\\GitHub\\Extract_PD_RAW\\Extract_PD_RAW_From_Pure_RAW\\Debug\\test.raw";
ifstream sfile(filename);
注意要加两条斜杠。
如果可行,请采纳哟~