如何在 C++ 中将“string*”转换为“const string&”?
Posted
技术标签:
【中文标题】如何在 C++ 中将“string*”转换为“const string&”?【英文标题】:How do I convert something of "string*" to "const string&" in C++? 【发布时间】:2009-06-17 22:04:07 【问题描述】:例如,如果我有以下情况:
void foo(string* s)
bar(s); // this line fails to compile, invalid init. error
void bar(const string& cs)
// stuff happens here
我需要进行哪些转换才能使调用栏成功?
【问题讨论】:
【参考方案1】:改成:
bar(*s);
【讨论】:
我该怎么做?把 const string& 变成 string*? @Petr:你冒着抛弃const
-ness 的风险,但如果你知道自己在做什么,const_cast<string *>(&s)
【参考方案2】:
void foo(string* s)
bar(*s);
s
指向一个字符串,而bar
需要一个(引用一个)字符串,所以你需要给bar
s
指向的内容。 “s
指向的内容”的拼写方式是 *s
。
【讨论】:
【参考方案3】:在将指针转换为引用时,确保您没有尝试转换 NULL 指针很重要。编译器必须允许您进行转换(因为通常它无法判断它是否是有效的引用)。
void foo(string* s)
if(0 != s)
bar(*s);
* 运算符与 & 运算符相反。要将引用转换为指针,请使用 &(地址)。要将指针转换为引用,请使用 *(的内容)。
【讨论】:
以上是关于如何在 C++ 中将“string*”转换为“const string&”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C++ 中将 uint8_t 的向量转换为 std::string?