c++ - C++ std::filesystem::directory_iterator cout 是否带有附加引号?
问题描述
我有一个关于filesystem
和的问题directory_iterator
。
这是一个简单的测试代码
#include <string>
#include <iostream>
#include <filesystem>
int main()
{
std::string path = ".";
for(const auto &entry: std::filesystem::directory_iterator(path))
{
std::cout << entry.path() << std::endl;
std::string path_string = entry.path();
std::cout << path_string << " " << path_string.size() << std::endl;
}
return 0;
}
运行此代码会产生如下输出
"./main.cpp"
./main.cpp
10
似乎是从返回entry.path()
的类型进行隐式转换到通过在输出周围cout.operator<<
添加额外" "
字符的类型,而直接转换为std::string
对象,这不会发生。
为什么是这样?这是 C++ 17 的错误吗?
解决方案
目的是,见std::filesystem::path::operator <<
在路径 p 上执行流输入或输出。
std::quoted
用于使空格在以后由流输入运算符读取时不会导致截断。
推荐阅读
- excel - 等待一段时间而不暂停工作表
- python - 删除时间间隔在一小时内的相似记录
- javascript - 将元组的python列表发送到JavaScript数组不起作用
- javascript - 如何使用 jQuery 删除除特定类之外的所有 div 和其他 DOM HTML 元素
- mysql - 具有重叠范围的 GROUP BY CASE
- javascript - 用提琴手注入sql
- python - 是否可以在当前终端中运行 Python 选择?
- python - 如何从python中的列表列表中提取所有列和对角线?
- r - 条形图乱序
- c++ - 事件驱动编程和绿色线程:它们的关系是什么?