C++文件操作相关
代码
#include
#include
#include
#include
#include
using namespace std;
void exitWhenInvalidScreen(int input) {
if (input <= 0 || input>1000) {
std::cout << "invalid screen size" << std::endl;
exit(0);
}
}
class Screen {
private:
//----补充多个数据域成员
unsigned int _width;
unsigned int _height;
// 在Screen类中获取/释放图形窗口资源,是一种RAII方法
//关于RAII,可以参见异常处理单元的材料
Screen(unsigned int width, unsigned int height) {
// 如果启用了图形库,则将初始化图形模式的函数置于此处
// initgraph(width_, height_);
_width = width;
_height = height;
};
Screen(){}
~Screen () {
// 如果启用了图形库,则将关闭图形模式的函数置于此处
// closegraph();
delete instance;
}public:
static Screen* instance;
//----补充 getWidth() 与 getHeight() 函数,static Screen* getInstance(unsigned int width = 640, unsigned int height = 480) {
// 单例模式
//----补充函数体
if (instance == 0) {
instance = new Screen(width, height);
}
return instance;
}
unsigned int getWidth(){
return _width;
}unsigned int getHeight(){
return _height;
}
};
Screen* Screen::instance = 0;
//----补充Screen类的特殊数据成员初始化语句int main() {
int width, height;
Screen* screen = 0;
string filename="screen.txt";
fstream fs;
fs.open(filename,ios::out|ios::in);
if(fs.fail()){
cout<<"open failed!"<>width>>height;
//cout<width>>height;
}
fs.clear();
screen = Screen::getInstance(width, height);
screen = Screen::getInstance();
fs.seekp(ios::beg);
fs >getwidth>>getheight;
cout<
说明 主函数中首先定义了string类型的文件名对象;
然后创建了 fstream 的对象;
随后调用open函数,使用读写模式打开文件。
string fn("screen.txt");
fstream fs;
fs.open(fn, ios::in | ios::out);
通过使用类似下面的代码(fail()函数),对文件打开的状态进行判别。
对于使用 ios::in | ios::out 模式打开的文件,如果打开失败,一般来说是文件不存在(也有可能是文件是不可写的)
如果 fail() 函数返回真值,则创建该文件(用ios::out模式);
然后再次使用 **ios::in | ios::out **模式打开该文件。
if (fs.fail()) {
cout << "file does not exist." << endl;
fs.open(fn, ios::out);
fs.close();
fs.open(fn, ios::in | ios::out);
}
【C++文件操作相关】从文件中读入屏幕宽和高,如果读取失败,则清除文件操作的状态位,然后从键盘读入屏幕宽和高
fs >> width >> height;
if (fs.fail()) {
cout << "can not read from file" << endl;
cout << "Please input screen width and height:" << endl;
fs.clear();
cin >> width >> height;
}
移动文件的输出指针到文件头,然后将屏幕的宽和高写入到文件中。
如果写失败,则关闭文件并且返回 -1,结束程序。
fs.seekp(ios::beg);
fs << screen->getWidth() << " " << screen->getHeight() << endl;
if (fs.fail()) {
cout << "Can not write to file, exit" << endl;
fs.close();
return -1;
}
移动文件的输入指针到文件头,然后从文件中读出将屏幕的宽和高,再将其显示到屏幕上。
最后关闭文件流。
fs.seekg(ios::beg);
fs >> width >> height;
cout << width << " " << height << endl;
fs.close();
推荐阅读
- Boolan|Boolan C++标准库 第二周
- JavaScript实现文本转换为文件示例详解
- 深度学习|Tensorflow操作明细
- 操作系统学习笔记3|操作系统学习笔记3 | 操作系统简史
- C#|C# 创建标签PDF文件
- 一看就懂的PPT设计原则(PPT源文件)
- python使用pandas读写excel文件的方法实例
- Java读写资源文件类Properties
- 【存储数据恢复】NetApp存储误删文件夹的数据恢复案例
- 服务器dump文件位置,dump解析入门-用VS解析dump文件进行排障