我不能为 fstream() 的参数使用运算符“”sv 吗?

Can't I use operator ""sv for the parameter of fstream()?

#include<iostream>
#include<fstream>

using namespace std::literals;
int main()
{

    auto a = "st"sv;
    std::ifstream in("test.txt"sv, std::ios::in); //error C2664
    std::ifstream in("test.txt"s, std::ios::in);  
}

我正在使用 visual studio。我不能在 fstream 上使用 string-view literal ""sv 吗?或者我必须设置一些东西吗?

没有。你不能。

您不能使用它,因为 std::ifstream 没有接受 std::string_view ref 的构造函数 std::string_views 和 if_stream 接受的类型之间没有隐式转换,因此您必须使用 staic_caststd::string

的构造函数进行转换

如果你有一个std::string_view(左值),你可以按如下方式使用它

#include<iostream>
#include<fstream>

using namespace std::literals;
int main()
{

    auto a = "st"sv;
    auto file_location = "test.txt"sv;
    std::ifstream in(std::string(file_location), std::ios::in);  
}

Demo