C ++ открыть файл только для чтения - PullRequest
2 голосов
/ 24 ноября 2011

Я написал программу, которая открывает файл, затем построчно отображает его содержимое (текстовый файл)

#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 ]

13 голосов
/ 24 ноября 2011

Класс ifstream предназначен только для чтения, поэтому проблема решена.Кроме того, вы действительно хотели проверить argc после , используя argv[1]?

С другой стороны, когда вы используете fstream, вам нужно указать, как вы хотите открытьфайл:

fstream f;
f.open("file", fstream::in | fstream::out); /* Read-write. */
1 голос
/ 24 ноября 2011

По умолчанию mode параметр open для ifstream класса равен ios::in.То есть

infile.open(argv[1]); 

совпадает с:

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

Итак, вы открываете файл в режиме только для чтения.

0 голосов
/ 24 ноября 2011

Вам не нужно ничего делать, так как значение по умолчанию для открытого режима уже ios_base::in. Так что ты уже в порядке! :) Подробнее смотрите здесь: http://en.cppreference.com/w/cpp/io/basic_ifstream/open

0 голосов
/ 24 ноября 2011

Вы уже открыли файл только для чтения. Вы не можете написать в него, если вы используете ifstream. Четные:

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

гарантированно потерпит неудачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...