我编写了一个打开文件的程序,然后逐行显示其内容(文本文件)
#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])
是猜测某事的地方)
答案 0 :(得分:13)
班级ifstream
仅供阅读,问题解决了。另外,您是否真的想在之后使用argc
检查argv[1]
?
另一方面,当您使用fstream
时,您需要指定打开文件的方式:
fstream f;
f.open("file", fstream::in | fstream::out); /* Read-write. */
答案 1 :(得分:1)
open
类ifstream
的默认模式参数为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