以只读方式打开文件
C++ open a file as read-only
我写了一个程序,它打开一个文件,然后逐行显示它的内容(文本文件)
#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. */
ifstream
类open
的默认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
相关文章:
- 复制部分文件的C++/增强方式
- 文件追加的方式是,它在每次保存C++后结束行
- 为什么添加 MPI 时文件打不开?
- 以编程方式防止重命名或删除文件,但仍使其可写
- 是否可以在C++中以间接方式包含头文件
- 为Catch2中的外部文本文件指定路径的最佳方式
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?
- 我需要帮助以连续的方式将对象的字段正确写入文件
- 使用 C++ 显示 (.lnk) 快捷方式文件的真实路径
- 如何以可移植方式删除名称为 wchar_t 类型的文件C++
- 在Visual C ++中与Stockfish(外部可执行文件)通信的最佳方式
- Newline更改了C 中打印从文件读取的字符串的方式
- QDIR入口列表可以使用文件夹快捷方式透明地工作
- 二进制文件中的某些数据如图所示,并以奇怪的方式显示OS
- 模板类静态在最终二进制文件中跨共享库以不同方式实例化是否一致
- 打开文件的正确模式是什么,以便 seekp() 的工作方式与在默认模式下打开的文件相同
- 了解文件页在技术级别的工作方式
- 是否可以以编程方式创建迷你转储文件而不会崩溃?
- 如何在读取文件时打印数组
- 使文件无法打开标头