【发布时间】: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