Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ If...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 作用域 C++ 递归

C++ 类

C++ OOP C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 堆栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何

C++ 加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 例子

C++ 例子 C++ 真实例子 C++ 编译器 C++ 练习 C++ 测验 C++ 证书


C++ ofstream

❮ fstream 类


例子

使用 ofstream 写入文件

#include <iostream>
#include <fstream>
using namespace std;

int main() {
  // Create and open a text file
  ofstream MyFile("filename.txt");

  // Write to the file
  MyFile << "Files can be tricky, but it is fun enough!";

  // Close the file
  MyFile.close();
} 

定义和用法

The ofstream 类(“输出文件流”的简称)用于写入文件。

The ofstream 类在 <fstream> 头文件中定义。

要打开一个文件,将文件路径传递给构造函数

ofstream MyFile("filename.txt");

The << 插入运算符和各种函数可用于写入文件。


插入运算符

The << 插入运算符将文字值或变量的内容写入文件。

int year = 2024;
MyFile << year << "\n";
MyFile << "Files can be tricky, but it is fun enough!";

操纵符

操纵符改变写入文件的数据的格式。它们与 << 插入运算符一起使用,与文字值和变量的使用方式相同。

除了 setw() 之外,操纵符的效果会持续到另一个操纵符改变它为止。

下表显示了一些有用的操纵符。

操纵符 描述 例子
boolalpha 将布尔值写入“true”和“false”,而不是“1”和“0”。 MyFile << boolalpha << false;
dec 将整数表示为十进制数字。 MyFile << dec << 12;
endl 写入一个换行符。此操纵符还刷新输出缓冲区,这使其效率低于打印 \n MyFile << "Line 1" << endl << "Line 2";
ends 写入 \0 空终止字符,用于结束 C 风格字符串。 MyFile << "Hello World!" << ends;
fixed 将浮点数表示为固定的小数位数。小数位数可以使用 setprecision() 操纵符确定。 MyFile << fixed << 19.99;
hex 将整数表示为十六进制数字。 MyFile << hex << 12;
internal 如果指定了宽度(使用 setw() 操纵符),数字将左对齐其符号,而值右对齐,其他数据类型将右对齐输出。 MyFile << setw(10) << internal << -12345;
left 如果指定了宽度(使用 setw() 操纵符),将输出左对齐。 MyFile << setw(10) << left << "Hello";
noboolalpha 用于重置 boolalpha 操纵符所做的更改。 MyFile << noboolalpha << false;
noshowbase 用于重置 showbase 操纵符所做的更改。 MyFile << hex << noshowbase << 12;
noshowpoint 用于重置 showpoint 操纵符所做的更改。 MyFile << noshowpoint << 12345.0;
noshowpos 用于重置 showpos 操纵符所做的更改。 MyFile << noshowpos << 12;
nouppercase 用于重置 uppercase 操纵符所做的更改。 MyFile << hex << nouppercase << 12;
oct 将整数表示为八进制数字。 MyFile << oct << 12;
right 如果指定了宽度(使用 setw() 操纵符),将输出右对齐。 MyFile << setw(10) << right << "Hello";
scientific 以科学计数法表示浮点数。小数位数可以使用 setprecision() 操纵符确定。 MyFile << fixed << 19.99;
setfill() 选择一个字符作为填充。
需要 <iomanip> 库。
MyFile << setfill('.') << setw(10) << 19.99;
setprecision() 选择浮点数的精度。如果使用了 fixedscientific 操纵符,则指定小数位数,否则指定有效数字位数。
需要 <iomanip> 库。
MyFile << setprecision(4) << 12.3456;
setw() 指定下一个输出的最小字符宽度。如果输出不够宽,则添加填充以填补剩余空间。
需要 <iomanip> 库。
MyFile << setw(10) << "Hello";
showbase 当将整数表示为十六进制或八进制时,在数字前加上 "0x" 或 "0" 以显示其基数。 MyFile << hex << showbase << 12;
showpoint 始终为浮点数写入小数点,即使不需要。 MyFile << showpoint << 12345.0;
showpos 始终在正数旁边写入 "+" 号。 MyFile << showpos << 12;
uppercase 以大写形式表示十六进制数字和科学记数法 "e"。 MyFile << hex << uppercase << 12;

文件写入函数

文件写入函数将数据写入文件,并将文件指针移动到写入内容后的第一个位置。

write()

The write(str, n) 方法将 char 数组 str 中的 n 个字符写入文件。

char myStr[] = "Hello World!";
MyFile.write(myStr, 5);

put()

The put(c) 方法将指定的字符 c 写入文件。

char grade = 'B';
MyFile.put(grade);

文件处理函数

文件处理函数打开、关闭和导航文件。

open()

The open(filepath) 方法打开由 filepath 指定的路径上的文件。如果文件已打开,则此方法无效。

ofstream MyFile;
MyFile.open("filename.txt");

is_open()

The is_open() 方法如果文件已打开则返回 true,如果未打开文件则返回 false。

ofstream MyFile;
cout << MyFile.is_open(); << "\n"; // Displays 0 because the file is not open
MyFile.open("filename.txt");
cout << MyFile.is_open(); << "\n"; // Displays 1 because the file is open

close()

The close() 方法关闭文件。完成文件操作后,关闭文件以释放资源是良好的做法。

MyFile.close();

rdbuf()

The rdbuf() 方法返回指向内部 filebuf 对象的指针,该对象直接处理文件。

filebuf * buf = MyFile.rdbuf();

seekp()

The seekp(position) 方法将文件指针移动到相对于文件开头的指定位置。

MyFile.seekp(6)

The seekp(position, origin) 方法将文件指针移动到相对于 origin 的文件中指定的 position 位置。origin 有三个可能的值

  • ofstream::beg - 位置相对于文件开头。
  • ofstream::cur - 位置相对于当前文件位置。
  • ofstream::end - 位置相对于文件结尾。

将文件指针移动到不同的位置

MyFile.seekp(6, ofstream::beg);
cout << MyFile.tellp(); << "\n";
MyFile.seekp(-3, ofstream::cur);
cout << MyFile.tellp(); << "\n";
MyFile.seekp(-4, ofstream::end);
cout << MyFile.tellp(); << "\n";

tellp()

The tellp() 方法返回文件指针在文件中的当前位置。

cout << MyFile.tellp();

❮ fstream 类

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.