【发布时间】:2020-04-08 16:15:58
【问题描述】:
我正在尝试删除 std 字符串视图的最后一个字符,但无论我做什么,它都保留在那里。我认为这是因为我不小心删除了“/0”而不是所需的“]”。
这是我的代码:
#include <iostream>
#include <tstr/tstring.h>
#include <cstring>
template<typename Class>
constexpr const char* to_string() {
std::string_view str = __PRETTY_FUNCTION__;
auto first = str.find("= ");
auto last = str.find("]");
auto str2 = str.substr(first + 2, last - first + 1);
return str2.data();
}
class Foo {};
int main()
{
std::cout << to_string<Foo>() << std::endl;
return 0;
}
这会输出Foo]。如何删除尾随的]?
谢谢。
【问题讨论】:
-
std::string_view::data()不承诺以 null 结尾的 C 样式字符串。它只提供指向第一个字符的指针,长度丢失。 -
std::string_view: "..指的是一个常量连续序列..." 来源:en.cppreference.com/w/cpp/string/basic_string_view
标签: c++ gcc string-view