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

时间:2012-04-26 05:55:00

标签: 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个字符,但我认为这不会影响它。

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

1 个答案:

答案 0 :(得分:2)

open的签名是:

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

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

为什么不使用一个cin来阅读所有字符?为:

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

或者甚至更好地使用String类来获取用户输入,然后使用c_str()获取可以传递给const char*的{​​{1}}等效项。