- 普通打开文件方法
//打开文件
void OpenFile() {
ifstream fin("Vincent.txt");
string s;//文件保存成字符串存在s中
string line;//文件每一行缓存
while (getline(fin, line))//按行读取数据
{
//cout << "Read from file: " << line << endl;
s = s + line;
}
cout << "Read from file: " << s << endl;
}
- 输入输出流二进制打开文件
ifstream in;//ifstream是从硬盘到内存
ofstream out;//ofstream是从内存到硬盘
//建立输入输出流
void SetFiles(int argc, char*argv[]) {//argc为命令行中的参数,argv[i]是指向第i个参数的指针
char OutputFile[50], InputFile[50];
//文件名是否提供
//提供了文件名
if (argc >= 2)//第二个参数argv[1]是文件名
strcpy_s(InputFile, argv[1]);//复制 //注意strcpy_s中多了第二个参数,限制复制字符串的长度,避免越界
//没有提供文件名,则提示用户输入
else {
cout << "请输入文件名(无需扩展名)" << endl;
cin >> InputFile;
}
//文件名不应有扩展名
if (strchr(InputFile, '.')) {//extern char *strchr(const char *s,char c);查找字符串s中首次出现字符c的位置。用extern修饰的全局变量
cerr << "文件名不可包含扩展名啊!" << endl;
exit(1);//非正常退出
}
//else
// cout << "恭喜,成功打开啦~" << endl;
//以二进制方式打开文件
strcat_s(InputFile, ".txt");
in.open(InputFile, ios::binary);//void open(const char* filename,int mode,int access);文件名,方式,属性
if (in.fail()) {
cerr << "有毒啊!无法打开" << InputFile<< endl;
exit(1);//非正常退出
strcpy_s(OutputFile, InputFile); //注意strcpy_s中多了第二个参数,限制复制字符串的长度,避免越界。
strcat_s(OutputFile, ".lyc");//将两个char类型连接。 //strcat_s比strcat更安全
out.open(OutputFile, ios::binary);
}
}
加油啦~