如何在共享指针向量中检查重复的"ofstream"对象
How to check for duplicate 'ofstream' objects in a vector of shared pointers
在一个实践项目中,我正在学习异步/线程方法以及服务类型类的概念。我有一个指向 ofstream 对象的共享指针向量,但不知道如何检查该向量中的重复项。
为了澄清起见,我选择在项目的每个模块中使用一个日志文件,但是如果为同一文件添加了两个 ofstream 对象可能会导致输出混乱。我已经尝试了几种不同的方法来比较它们,但我无法弄清楚这样做的标准方法。关于这个主题的信息似乎也不多,或者也许我错过了一些基本的东西,我会因为错过而扇自己耳光。
我知道"i"正在访问向量中的对象,但似乎无法对其进行编译。非常感谢任何和所有的帮助。
class LoggerService
{
public:
...
private:
...
bool add_log_file(const std::string& file)
{
bool is_duplicate = false;
for (int i : *ofstreams_) // <------ This block.
{
if (file.c_str() == i)
{
is_duplicate = true;
break;
}
}
if (!is_duplicate)
{
return false;
}
else
{
ofstreams_.push_back(std::make_shared<std::ofstream>(file.c_str()));
return true;
}
}
...
static std::vector<std::shared_ptr<std::ofstream>> ofstreams_;
...
}
我怀疑是否有一种标准方法可以获取开放流的路径。怎么样,而不是一个矢量,你有一个文件>流的映射。或者创建自己的包含路径和ofstream的类,并将它们放在向量中
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 试图让变量检查数组中的某些内容
- 检查值是否在集合p1和p2中,但不在p3中
- C++概念:如何使用'concept'检查模板化结构的属性?
- 概念TS检查忽略私有访问修饰符
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 如何在C++中检查2D数组中负值的输入验证
- C++:正在检查LinkedList中的回文-递归方法-错误
- 使用for循环检查数组中的重复项
- 如何检查一个c++字符串中有多少相同的字符/数字
- 检查不带转换的扫描格式
- 如何检查线程是否锁定
- 清除前检查矢量
- 如何在共享指针向量中检查重复的"ofstream"对象
- 对 std::ofstream 进行空文件检查
- C++无法在函数内检查 ifstream/ofstream.is_open()
- 使用std:ofstream时,将目录的副本检查到文件中