使用 std::string 打开文件

Posted

技术标签:

【中文标题】使用 std::string 打开文件【英文标题】:Opening a file with std::string 【发布时间】:2009-02-08 15:29:10 【问题描述】:

这应该是一个相当微不足道的问题。我正在尝试使用 std::string (或 std::wstring )打开一个 ofstream 并且在不进行混乱转换的情况下使其正常工作时遇到问题。

std::string path = ".../file.txt";

ofstream output;

output.open(path);

理想情况下,如果有更好的方法,我不想手动转换它或涉及 c 样式的字符指针?

【问题讨论】:

【参考方案1】:

在路径字符串中,使用两个点而不是三个点。

你也可以在字符串上使用'c_str()'方法来获取底层的C字符串。

output.open(path.c_str());

【讨论】:

【参考方案2】:

这应该可行:

output.open(path.c_str())

【讨论】:

【参考方案3】:

恐怕这根本不可能。你必须使用 c_str,是的,它很烂。

顺便说一句,使用 char* 也意味着 fstream 不支持 Unicode 文件名……真可惜。

【讨论】:

wfstream for std::wstring 有人吗? 不需要特殊的流类型,只需重载 open() 以获取 std::wstring。 basic_fstream 的构造函数只接受 const char *(从不wchar_t)。见标准:27.8.1.6 @Assaf - 我知道标准中有什么,我正在回复 KTC 关于制作另一个流类的评论,这没有意义。

以上是关于使用 std::string 打开文件的主要内容,如果未能解决你的问题,请参考以下文章

我需要如何更改我的程序以使用打开/关闭原则?

如何利用rapidjson修改json文件

MoveFileA() 不喜欢我的论点 [重复]

C++:如何将 std::string 的内容写入 UTF-8 编码文件?

文件到 std::string_view

将整个 ASCII 文件读入 C++ std::string [重复]