C ++以只读方式打开文件

时间:2011-11-24 10:57:36

标签: c++ file-io

我编写了一个打开文件的程序,然后逐行显示其内容(文本文件)

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

int main (int argc, char* argv[])
{
    string STRING;        
    ifstream infile;    
    infile.open(argv[1]);   
    if (argc != 2)  
    {
        cout << "ERROR.\n";
        return 1;
    }
    if(infile.fail())
    {
        cout << "ERROR.\n";
        return 1;
    }
    else
    {
        while(!infile.eof())
        {
            getline(infile,STRING); 
            cout<<STRING + "\n"; 
        }   
        infile.close(); 
        return 0; 
    }
}

我需要添加什么才能使文件成为只读文件?

infile.open(argv[1])是猜测某事的地方)

4 个答案:

答案 0 :(得分:13)

班级ifstream仅供阅读,问题解决了。另外,您是否真的想在之后使用argc检查argv[1]

另一方面,当您使用fstream时,您需要指定打开文件的方式:

fstream f;
f.open("file", fstream::in | fstream::out); /* Read-write. */

答案 1 :(得分:1)

openifstream的默认模式参数为ios::in。那是

infile.open(argv[1]); 

与:

相同
infile.open(argv[1], ios::in); 

所以你以只读模式打开文件。

答案 2 :(得分:0)

您已经将文件打开为只读。如果您使用ifstream,则无法写信。甚至:

infile.rdbuf()->sputc('a');

保证失败。

答案 3 :(得分:0)

您无需执行任何操作,因为openmode的默认值已为ios_base::in。所以你已经很好了:) 有关详情,请参阅此处:http://en.cppreference.com/w/cpp/io/basic_ifstream/open