使用 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 打开文件的主要内容,如果未能解决你的问题,请参考以下文章