C++中函数 ofstream outfile,文件路径名的问题
我用ofstreamoutfile(PathName,ios_base::out);来把数据写到指定路径的txt文档中,其中,路径为:CStringPathName=st...
我用ofstream outfile(PathName,ios_base::out);来把数据写到指定路径的txt文档中,其中,路径为:CString PathName=string1+string2, 其中string1是通过一个MFC对话框程序选择的(比如C:\new\实验结果),string2="data.txt"(即文件名为data.txt)
我试了一下这个方法(PathName=string1+string2),应该是可行的,但不知为何,总是时而可以时而出错,错误为:实际保存为C:\new\实验结果data.txt,文本名字变成“实验结果data”了。。。
但有时是可以的:实际保存为C:\new\实验结果\data.txt
请问程序出啥错了?本人菜鸟,谢谢 展开
我试了一下这个方法(PathName=string1+string2),应该是可行的,但不知为何,总是时而可以时而出错,错误为:实际保存为C:\new\实验结果data.txt,文本名字变成“实验结果data”了。。。
但有时是可以的:实际保存为C:\new\实验结果\data.txt
请问程序出啥错了?本人菜鸟,谢谢 展开
3个回答
展开全部
C++中Txt文件读取和写入
一、ASCII 输出
为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所有的C++标准头文件都是无后缀的。)。这是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, <iostream.h> 已经被<fstream.h>包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。
如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。 我们现在开始讲输出部分,首先声明一个类对象。
ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。
fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.
ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。
int num = 150;
char name[] = "John Doe";
fout << "Here is a number: " << num << "/n";
fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。
一、ASCII 输出
为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所有的C++标准头文件都是无后缀的。)。这是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, <iostream.h> 已经被<fstream.h>包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。
如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。 我们现在开始讲输出部分,首先声明一个类对象。
ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。
fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.
ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。
int num = 150;
char name[] = "John Doe";
fout << "Here is a number: " << num << "/n";
fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。
展开全部
你要简单判断一下string1末尾是否是\就行了.
int len = string1.length();
if( string[len-1] == '\\' ) {
PathName = string1+string2;
} else {
string1 += "\\";
PathName = string1+string2;
}
int len = string1.length();
if( string[len-1] == '\\' ) {
PathName = string1+string2;
} else {
string1 += "\\";
PathName = string1+string2;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string2="\data.txt"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询