对于这个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个字符,但我认为这不会影响它。
如果需要更多信息,请告诉我。
答案 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}}等效项。