能够在具有char*的容器中查找find而不需要创建临时字符串对象,这是一个。见:和还有..。
为什么C++不能为用作键类型的任何类型T启用此功能。
因此,在C++20/23中,我们是AFAIKT,剩下:
int main()
{
{
// Slow, constructs temporary
std::map<std_string, int> m;
auto it = m.find("Olaf");
}
{
// "Fast" does not need to
下面的代码没有遇到任何问题,但是将char []传递给接受std::string&作为参数的函数好吗?
const char* function(std::string& MyString)
{
MyString = "Hello World";
return MyString.c_str();
}
int main()
{
char MyString[50];
/*
*Is it good practice to cast like this?
*what possible issues i cou
有几种方法可以将文本信息传递到C++中的函数:它可以是c-string/std::string,by value/by reference,lvalue/rvalue,const/mutable。C++17在标准库中添加了一个新类:std::string_view。string_view的语义是提供没有所有权的只读文本信息。因此,如果您只需要读取一个字符串,您可以使用:
void read(const char*); // if you need that in a c-style function or you don't care of the size
void r
我需要找到并删除字符串的一部分(子字符串)。string_view似乎是个好主意,但我不能让它与string::erase一起工作。
// guaranteed to return a view into `str`
auto gimme_gimme_gimme(const std::string& str) -> std::string_view;
auto after_midnight(std::string& str)
{
auto man = gimme_gimme_gimme(str);
str.erase(man); // way to h
在下面的代码中,std::string_view参数比const char*参数更好吗?
void func( const std::string_view str )
{
std::istringstream iss( str.data( ) ); // str is passed to the ctor of istringstream
std::size_t pos { };
int num { std::stoi( str.data( ), &pos, 10 ) }; // and here it's passed to std::stoi