【问题标题】:How to input a std::string_view in C++?如何在 C++ 中输入 std::string_view?
【发布时间】:2021-05-30 14:56:29
【问题描述】:

这是输入(有点)std::string_view 变量的正常方式:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string str; // Still have to use std::string class // Resulting in stack/heap allocation
    getline(cin, str);

    string_view view(str);

    return 0;
}

我想知道有没有办法直接输入 std::string_view 而不必使用字符串类(使用堆分配)???

[我绝对知道字符串文字(如“Hello”)在编译时直接存储在二进制代码中,不会导致任何堆栈/堆分配.. . 所以也许有任何方法可以直接将字符串文字输入到 string_view ??? ]

注意:我希望用户在代码中输入不是硬编码的字符串!

【问题讨论】:

  • 不。您不能允许程序在没有额外分配的情况下存储任意数量的输入数据,std::string_view 不会按设计分配任何额外数据。您的代码编写正确。
  • string_view 没有自己的存储空间——它是其他对象提供的存储空间的视图。但是用户输入需要存储在某处

标签: c++ string c++17 c++20 string-view


【解决方案1】:

不,没有办法将输入读入字符串视图。

如果你想输入一个字符串,你必须把它存储在某个地方。不一定非得是std::string,但这是最简单的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2021-08-11
    相关资源
    最近更新 更多