使用字符数组作为文件名
Using a character array as a file name?
很抱歉这个问题,但我似乎无法让它工作,任何帮助将不胜感激。
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 流,对于我尝试传递的文件名,它是一个字符数组。 我在正确的目录中有一个名为 a.txt 的文件(我已经确认了这一点),所以我输入 a.txt,它被读取到 a 数组中,但 inFile.good() 仍然返回 false。 我也知道数组大于 5 个字符,但我认为这不会影响它。
如果需要更多信息,请告诉我。
open
的签名是:
void open ( const char * filename, ios_base:openmode mode = ios_base::in );
如前所述,第一个参数是一个常量字符串(NUL 终止字符数组)。在您的情况下,末尾没有 NUL 字符。为此,您需要一个比您将输入的最大文件名大小大 1 的数组。
为什么不只用一个cin
来阅读字符呢?如:
cin >> a;
ifstream inFile;
inFile.open(a);
或者更好的是使用 String
类来获取用户输入,然后使用 c_str()
获取可以传递给 open
的const char*
等效项。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- 将文件名从目录添加到 char* 数组. C++
- C :如何询问文件名并打印字符数组
- 使用字符数组作为文件名
- 如何用c++将文件夹中的文件名存储到数组中
- 从字符数组解析文件名
- 如何将目录的特定文件名读取到数组中
- 为什么 std::getline 会覆盖包含文件名的字符数组