使用字符串作为文件名与 std::fstream
Using a string as a file name with std::fstream.
我遇到了关于数据文件的问题,它告诉我们编写一个函数来做事。在所有其他问题中,我们处理固定文件名,例如"abc.txt",因此函数不会泛化。我想知道是否有一种方法可以让数据文件在语句中使用字符串变量:
fstream file("abc.txt",ios::in|ios::out);
并将其转换为:
char str[20]="Newfile.txt";
fstream file(str,ios::in|ios::out);
有没有办法使用字符串作为带有std::fstream
的文件名?我尝试使用字符串,但没有创建这样的文件,尽管程序的编译没有显示任何错误。
这取决于编译器。这种方式可以始终如一地工作:
void do_something(std::string const &filename) {
std::fstream(filename.c_str());
// ...
}
这种方式适用于新的(C++11)编译器,但不适用于旧的编译器:
void do_something(std::string const &filename) {
std::fstream(filename);
// ...
}
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从命令行c++发送文本文件名
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- C++11 (MSVS2012) 正则表达式在多行 std::string 中查找文件名
- 在 std::string 变量中使用提升库存储文件名
- 在C++中使用std::ofstream创建具有随机文件名的文件时出现问题
- C++--文件名中的前导零(CSV文件)--存储/拆分std::矢量的值
- Boost库,使用std::wstring作为文件名,Boost::property_tree::read_xml
- 用文件名初始化Std::ifstream
- 设置std::仅包含文件名(a, f/a, f/b, f/f/c等),如何根据给定的f/列出目录
- 使用字符串作为文件名与 std::fstream
- 为什么 std::getline 会覆盖包含文件名的字符数组