小编cam*_*ard的帖子

为什么我的函数只能使用左值?

我有一个返回小写字符串的函数:

constexpr auto string_to_lower_case(const std::string& string) {
    return string
        | std::views::transform(std::tolower)
        | std::views::transform([](const auto& ascii) { return static_cast<char>(ascii); });
}
Run Code Online (Sandbox Code Playgroud)

我希望当我传递"SOME"or时该函数返回相同的结果const std::string some("SOME"),但事实并非如此。当我尝试打印 的结果时string_to_lower_case("SOME"),我检索到一个空控制台( 的输出string_to_lower_case(some)是正确的)

const std::string some("SOME");
for (const auto& ch : string_to_lower_case(some))
    std::cout << ch;
Run Code Online (Sandbox Code Playgroud)

c++ string rvalue lvalue std-ranges

7
推荐指数
1
解决办法
317
查看次数

标签 统计

c++ ×1

lvalue ×1

rvalue ×1

std-ranges ×1

string ×1