c – 使用字符数组作为文件名?

对于这个noobish问题感到抱歉,但我似乎无法让这个工作,任何帮助将不胜感激.

const int sz = 24;


int main()
{
char a [sz];

for (int i = 0; i < 5; i++)
    cin >> a[i];

ifstream inFile;

inFile.open(a);

cout << inFile.good() << endl;


return 0;
}

这是我正在尝试做的一个较小的版本,这是打开带有.open()的inFile流和我试图传递的文件名,这是一个char数组.我在右侧目录中有一个名为a.txt的文件(我已经确认了这一点)所以我输入了a.txt,它被读入一个数组,但是inFile.good()仍然返回false.我也知道数组大于5个字符,但我不认为这会影响它.

如果需要更多信息,请告诉我.

最佳答案 公开的签名是:

void open ( const char * filename, ios_base:openmode mode = ios_base::in );

如图所示,第一个参数是一个常量字符串(nul终止字符数组).在你的情况下,最后没有任何字符.为此,您需要一个大小超过您要输入的最大文件名大小的数组.

为什么不用一个cin读取所有角色?如:

cin >> a;
ifstream inFile;
inFile.open(a);

或者甚至更好地使用String类来获取用户输入,然后使用c_str()来获取可以传递给open的const char *等价物.

点赞