文件名的全局变量
Global Variable for file name
例如,我的程序文件main.cpp 的4个部分中有这行代码
ifstream fin; fin.open("filename.txt")
但我不想去更改这四个位置的所有文件名。
如何为其创建全局变量名称?它与filenames.txt的工作方式不同吗?
也许您尝试了这样的全局变量:
const std::string filename = "filename.txt";
然后尝试用初始化CCD_ 2
ifstream fin; fin.open(filename);
但它对你不起作用。这可能是因为您没有支持2011标准的C++编译器或库。如果你真的有这样一个编译器,它会工作得很好。但是,如果不这样做,则需要将一个C风格的字符串传递给ifstream
构造函数。
ifstream fin; fin.open(filename.c_str());
我会这样做。
传递一个命令行参数,指定应用程序配置文件的路径。当应用程序加载时,它会解析此配置文件,并保存文件名等项的所有值。有一个类或全局结构,可以根据请求存储和传递这些值。例如:
fin.open(AppConfig.get("filename")); // if the AppConfig is a class.
fin.open(AppConfig["filename"]); // if AppConfig was a map like structure.
这种数据驱动的开发是很好的实践。如果你只使用一个文件,你可能只想在文件的开头定义一个常量名称:
const char* FILENAME = "my file.txt"; // or
#define FILENAME "my file.txt"
每次使用常数:
fin.open(FILENAME); // use this repeatedly
您可以定义全局常量变量
const char* fileName = "filename.txt";
或
const std::string fileName = "filename.txt";
如果全局变量不能变异,那么它们也不错。然后使用:
ifstream fin(fileName);
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 内联函数中具有内部链接的全局变量
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局变量 多读取器 一个写入器多线程安全?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- C++ 在编译时具有函数计算全局变量
- 修改程序的入口点时未调用全局变量的构造函数
- 使用 std::ios_base::Init 正确初始化全局变量
- 为什么我的全局变量似乎没有变化?
- C ++程序如何返回我的数组或写入全局变量
- 为什么我的数组值与此处的全局变量不匹配?
- QT C++中对全局变量的未定义引用
- 跨多个类的全局变量而不会出现重定义错误?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++线程不检测全局变量更改
- 在 elf 文件中查找全局变量的位置
- 文件名的全局变量