C++ 中的文件读写问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 08:13:59
c++标准库提供的文件输入输出流fstream的open()成员函数需要提供的文件名必须是常量吗? 如果是的话, 如何使用用户在程序运行时提供的文件名?
我使用了这样一段代码, 可是在编译的时候没有通过:
//Read the wordlist
std::getline(std::cin, filename);
reader.open(filename);

我在网上查到的资料中显示filename必须是常量, open()这个成员的声明是void open(const char* filename,int mode,int access);

可以这样
string s;
char *p=s;
cin>>s;
std::getline(p,ios::in);
就是文件名虽然是常量,但它也可以是个字符串,你完全可以从键盘上输入,然后拼一个串做文件名名。

不必是常量,可以是个String类,原本的是个FileBuf类,从CString来,用char *也可以的,不但文件名还可以是路径带文件名打开别处的文件。
以下是我写的一段程序,可以用
/*
主要用于读取“x.txt”文件中第21行全数据的内容并存储到新文件中
*/
#define LENGTH 1024
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>

void maindeal()
{
ifstream fin;
ofstream fout;
int i,posit,k;
char filename[16];
char changetxt[32]=" target=";
char txt[LENGTH];
char *pdest,*next;

cin>>k;
for(i=1;i<k;i++)
{
strcpy(filename,"main");
sprintf(filename+4,"%d",i);
strcat(filename,".html");
fin.open(filename,ios::nocreate);
if(fin.is_open())
{
fin.setmode(filebuf::text);