c++ - Windows 中的 Phantom\.txt 文件

标签 c++ windows

似乎可以在 Windows 中创建一个可以读取的文件 \.txt,但我无法通过任何其他方式访问它或查看它是否存在。这似乎只适用于 \.txt 因为我无法创建其他带有反斜杠的文件,例如 a\.txt

string filename = "\\.txt";

// make file
ofstream writer(filename);
writer << "This file exists" << endl;
writer.close();

// read file
ifstream reader(filename);
string line;
getline(reader, line);
cout << line << endl;
reader.close();

当我在 bash 中使用 ls -lia 时,这个文件根本没有出现,但上面的程序读取它很好(我可以删除创建文件的部分并稍后运行它所以文件确实存在),这是如何工作的?

最佳答案

在 Windows 上,ofstream writer("\\.txt") 在当前驱动器的根目录中创建一个名为 .txt 的文件。这是一个完全有效的文件名。

ofstream writer("a\\.txt") 尝试在当前目录的 a 子目录中创建一个名为 .txt 的文件目录。 a 目录必须存在才能成功。它很可能不存在,因此对您来说失败了。

要创建目录,您可以使用 mkdir 函数(它与其他操作系统存在兼容性问题,因为 Windows 不兼容 POSIX),或 CreateDirectory WINAPI 函数,那是特定于Windows的。调用 CreateDirectoryA("a") 后,"a\\.txt" 路径应该起作用。

关于c++ - Windows 中的 Phantom\.txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69395029/

相关文章:

linux - 在家用 PC 上工作,但在不同的服务器上进行 Web 开发

c++ - 通过 C++ 在控制台中使用 Unicode 字符

c++ - 多态方法的可选参数,通过引用?

c++ - 链表迭代器模板编译错误

c++ - 使用 extern 'C' 后有没有办法重新启用名称修改?

windows - 在批处理文件中使用时 TaskList 命令挂起

两个线程能否同时读取同一个const内存块

c++ - Windows C++下链接库中的静态初始化

windows - 检测windows上的核心数

c++ - 如何使用 std::istringstream 获取正确的缓冲区大小以进行数据解析