以只读方式打开文件

C++ open a file as read-only

本文关键字:文件 方式打 只读      更新时间:2023-10-16

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

#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])是我猜测的地方)

ifstream仅用于读取,所以问题解决了。另外,您是否真的打算在之后使用argv[1]检查argc ?

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

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

ifstreamopen的默认mode参数为ios::in。这是

infile.open(argv[1]); 

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

以只读模式打开文件

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

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

您不需要做任何事情,因为openmode的默认值已经是ios_base::in。所以你已经准备好了:)详见:http://en.cppreference.com/w/cpp/io/basic_ifstream/open