微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ std::filesystem::directory_iterator cout 带附加引号?

如何解决C++ std::filesystem::directory_iterator cout 带附加引号?

我有一个关于 filesystemdirectory_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 以便在以后由流输入运算符读取时空格不会导致截断。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。