C++中fstream,ifstream及ofstream用法浅析

c++中有个类叫做fstream,可以实现打开一个文件作为流。创建一个对象,然后调用该对象的open函数,其主要有两个参数,第一个参数是字符串,表示文件的地址,第二个参数是代开方式,如:

fstream fin("a.txt",ios::in);
if(fin)
{
    cout<<"opened"<<endl;
    fin.close();
}
else
{
    cout<<"not exists"<<endl;
}

注意:如果文件不存在,则打开失败。如果这里打开方式采用的是ios::out,那么如果文件不存在,则会创建该文件

fstream还有两个子类分别是ifstream和ofstream。其中ifstream默认以输入方式打开文件,如果文件不存在,则打开失败。ofstream默认以输出方式打开文件,文件不存在,则会创建一个文件。

感兴趣的读者可以调试一下本文所示实例,以加深对C++中fstream操作文件方法的理解。

(0)

相关推荐

  • C++链表倒序实现方法

    本文通过一个实例展示了C++实现链表倒序的方法,对于C++数据结构的学习有很好的参考借鉴价值.具体方法如下: 首先,C++链表倒序的难点在于如何一个个地修改.虽然不是数组,但是大概思想是一样的,所以可以用一个for循序,一个游标对应for循环里面的 i,只不过要记得前一个节点和后一个节点,尤其是后一个,因为修改之后就访问不到后面的,所以要记录.for每一个循环只改变所指向的那个节点的指针,这样既不会乱套了. 用一个for循环就非常好理解了,实例代码如下所示: #include <iostream

  • C++输入一个字符串,把其中的字符按照逆序输出的两种方法解析

    用字符数组方法:基本思路是,先判断字符的结束标志'\0',然后从该位置向前输出.实现代码: 复制代码 代码如下: #include<iostream>using namespace std;int main(){ char a[50]; cout<<"please input a string:"; cin>>a; int i=0,k=0; while(i<50){        if(a[i]=='\0'){         k=i;    

  • C/C++中获取数组长度的方法示例

    学过C/C++的人都知道,在C/C++中并没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取其长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 而在C++中则可以使用模板

  • C++对数组的引用实例分析

    C++中所谓数组引用,即指向数组的引用: 如: int a[10] ; int (&b)[10] = a ; 如果写成: int a[10] ; int* &b = a ; 系统将会报错: cannot convert from 'int [10]' to 'int *&'. 或许你会说在数组名不就是指向这个数组的一个指针吗?题中a是int*类型的,b是指向int*的引用,按理应该是正确的啊,为什么会报错呢?这是因为编译器对指向数组的引用检查更加严格,需要检查数组的维数,在这里a被

  • C++类基本语法实例分析

    类是C++程序设计非常重要的概念,本文即以实例形式说明了类的常见用法.具体如下: 本测试代码主要包括以下内容: (1)如何使用构造函数: (2)默认构造函数: (3)对象间赋值: (4)const使用语法: (5)定义类常量: 一种方法是用enum,另一种方法是使用static. 实例代码如下: #include <iostream> using namespace std; enum sexType { MAN, WOMAN }; class Human { //the default is

  • C++输入输出操作符重载的深入分析

    操作符的重载有一些规则: 1. 重载操作符必须具有一个类类型或枚举类型操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义.如:int operator+(int, int), 不可以    2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数.在某些情况下,程序没有选择,操作符必须是成员:在另外一些情况下,有些经验可以指导我们做出决定.下面是一些指导:a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些

  • C++ namespace相关语法实例分析

    namespace命名空间是C++中一个非常重要的概念,本文实例展示了namespace的相关语法,供大家参考.具体如下: 本段测试代码包括如下内容: (1) 如何访问namespace中声明的名称: (2) namespace导致的相关冲突: (3) namespace可嵌套: (4) 可以在namespace中使用using声明和using编译命令: (5) 未命名的namespace:其作用域为定义该namespace所在的声明区域.C++推荐用来替代static定义静态变量. 具体程序代

  • C++实现不能被继承的类实例分析

    本文实例展示了C++实现不能被继承的类的方法,对于C++初学者而言有一定的学习借鉴价值.具体实现方法如下: 方法一: #include <iostream> using namespace std; class A { public: static A* getInstance(); static void deleteInstance(A* pA); private: A() { cout << "construct A\n";} ~A() { cout &l

  • C++中关于[]静态数组和new分配的动态数组的区别分析

    本文以实例分析了C++语言中关于[]静态数组和new分配的动态数组的区别,可以帮助大家加深对C++语言数组的理解.具体区别如下: 一.对静态数组名进行sizeof运算时,结果是整个数组占用空间的大小: 因此可以用sizeof(数组名)/sizeof(*数组名)来获取数组的长度. int a[5]; 则sizeof(a)=20,sizeof(*a)=4.因为整个数组共占20字节,首个元素(int型)占4字节. int *a=new int[4];则sizeof(a)=sizeof(*a)=4,因为

  • 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈

    1.scanf("%s",str)和gets(str) scanf("%s",str)和gets(str)均可用于输入字符串到字符数组变量str,但scanf("%s",str)只读到输入字符的空格或回车处,而gets(str)读到回车处结束,所以当句子中单词由空格分开时要用后者来输入,如下图所示: 需要强调一点,scanf("%s",str)在遇到'\n'(回车)或' '(空格)时输入结束,但'\n'(回车)或' '(空格)

  • C++输入输出注意事项总结

    本文总结了C++输入输出的各种注意事项,对于C++初学者或C++程序员来说都有一定的借鉴参考价值.具体总结分析如下: 一.string类: 1.cin>>string时,遇到'\n'或者空格即停止,并且'\n'或空格仍留在输入里,即只读了一个单词或什么都没读,但string类自己处理好了空字符什么的.下一次再这样读的话会跳过换行和空格; 2.读一行到string里可用getline(cin,string),这个函数一直读直到遇到了'\n',注意这里getline()不是cin的类方法,cin表

随机推荐