C++ 对字符串中任意字符的引用::C+中的字符串+;
我想要字符串C++ 对字符串中任意字符的引用::C+中的字符串+;,c++,string,reference,C++,String,Reference,我想要字符串名称的I第个字符的引用 我找不到相同的函数。没有函数。只是 Auto&Re= STR[i] < /COD> > P>这是一个值得一个好C++引用的问题。在该引用中查找std::string(这可能会将您重定向到更通用的std::basic_string),然后查找允许您访问字符(或作为更通用术语的“元素”)的成员函数 例如,列出了按提供的功能类型分组的basic_string的成员函数。“元素访问”组中列出的前两个函数,at()和operator[],提供对指定字符的访问。以下两个表
名称的I
第个字符的引用
我找不到相同的函数。没有函数。只是<代码> Auto&Re= STR[i] < /COD> > P>这是一个值得一个好C++引用的问题。在该引用中查找std::string
(这可能会将您重定向到更通用的std::basic_string
),然后查找允许您访问字符(或作为更通用术语的“元素”)的成员函数
例如,列出了按提供的功能类型分组的basic_string
的成员函数。“元素访问”组中列出的前两个函数,at()
和operator[]
,提供对指定字符的访问。以下两个表达式中的任何一个都将提供对字符串名称的i
第个字符的引用
name.at(i)
name[i]
或者,您可以将指针算法与data()
或c_str()
一起使用,但结果表达式往往比较混乱。只要simple足够,就坚持使用simple。您想要内存中的地址,或者想要在i
th索引中检索字符?auto&ch=name.operator[](i)代码>或更常见的auto&ch=name[i]代码>代码> STD::String::(SsieZiTi)返回索引<字符> > i代码> @ SMAC89>考虑代码>名称>代码>是int数组,然后<代码> name + i < /代码>,将提供“<代码> i>代码>字符位置的地址。类似地,对于string::string,我想知道哪个操作符/函数有助于检索I
th字符在内存中的地址。@Thope“reference to”和“address of”表示两个不同的东西s[I]
提供了引用,没有一个函数提供了地址,而是&s[I]
如果您愿意接受一个表达式,则可以使用。这实际上是在调用两个成员函数中的一个:您是否声称该函数不是一个函数?我感谢根据标准和实施细节的细节提供的准确和详细答案。然而,我的回答是出于帮助提问者的精神,而不是从noexcept
,const
,是否有可能通过策略性地使用std::launder
来获得一个右值,从而不会使底层存储失效。有时候人们只是想把事情做完。@RichL-Uh。。。什么谁说过关于noexcept
、const
或std::launder
?我在质疑你说的没有函数的说法。有一个函数。只需使用auto&ref=str.at(i)
,就可以完成任务。@RichL我可以同情一些人在这个网站上对答案过于苛刻和挑剔。我同意指出operator[]
是一个函数可能会被认为是吹毛求疵,即使它的使用看起来不像函数调用。然而,at()
的使用看起来确实像一个函数调用,就这个问题而言,它与操作符[]
的作用相同。你提出了一个彻头彻尾的错误主张,即使一个是松散的定义。