c++(文件和流)程序中创建文件时出现的错误
Error in a C++(files and streams) program for creating a file
我已经编写了这个程序,以便使用fstream
创建一个文件,输出应该显示文件是否已创建。我已经在几个在线编译器上运行它,如Codechef, c++ shell等。编译器已经成功编译了这个程序,但是输出没有相应的显示,而不是说file created编译器说error in creating file。这是否与开发工具有关?
下面是程序的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream file;
file.open("a.txt");
if(!file)
{
cout<<"Error in creating file!!!";
}
else
{
cout<<"File created successfully.";
file.close();
}
}
如果文件不存在,
fstream.open()
将失败。如果文件不存在,则创建该文件
file.open("a.txt", ios_base::out);
或者使用ofstream
ofstream file;
file.open("a.txt");
fstream构造函数和open函数默认为读写打开。该文件必须已经存在才能以这种模式打开。相反,打开for write:
file.open("a.txt", ios::out);
程序的行为可能取决于操作系统。顺便说一句,如果你想了解更多,请阅读操作系统:三个简单的部分。也许当前工作目录已经包含要写入的文件,或者没有适当的权限(它应该是可写的,以启用文件创建)。细节是特定于操作系统(可能还有文件系统)的。IIRC,一些操作系统(可能是Windows)不允许打开已经被其他进程打开的文件。
在Linux上,您可以使用strace(1)来找出哪些系统调用失败了(实际上,它告诉您某个给定程序或进程执行的所有系统调用)。
这[可能]不是c++标准保证的总是,但许多c++标准库都在(并兼容)C标准库之上,在失败时设置errno(3)(另见strerror(3)和perror(3)…);那么你可以试试:
fstream file;
file.open("a.txt", ios::out);
if (!file) {
// perror("a.txt");
cout<<"Error in creating file!!!" << strerror(errno) << endl;
}
当然,正如其他答案告诉你的那样(这个&你需要正确的模式打开…
参见std::system_error
相关文章:
- C++系统找不到指定的文件错误
- C++语法头文件错误
- C++生成文件错误"implicit entry/start for main executable"
- C++/生成文件错误:未定义对"main"的引用
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- C++程序不制作文件(错误)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- "what does ":*** [可执行文件] 错误 1 " mean ?"
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 在课堂上创建了一个朋友,给出"无输入文件"错误
- Qt .exe文件错误
- c++ 添加具有写入文件错误的文本变量
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 写入文本文件错误,QT
- C++写入文件错误
- Windows Subsystem for Linux (WSL) 下的间歇性随机"找不到文件"错误
- 犰狳读取MAT文件错误
- 无法求解FullPathForFilename:COCOS2DX中可能缺少文件错误
- C Wininet FTP列出了许多文件错误
- 生成文件错误 - 找不到文件 - *.cpp