获取指针的子字符串
Getting a substring of a pointer
我有一个函数,它将指向字符串的指针作为参数。我想找到该字符串的子字符串,但我尝试使用 use *str.substr()
但它说我正在尝试调用成员函数substr()
并且str
不属于类 std:string*
我该怎么办?
#include <string>
using namespace std;
int main() {
string str;
foo(&str);
}
void foo(string *str){
string temp = *str.substring(int, int);
}
以上是代码的要点。
你违反了运算符优先级规则,这意味着你的代码被解读为
*(str.substring(int, int));
可以使用指针取消引用运算符->
str->substring(a, b);
或使用括号明确说明您想要的内容
(*str).substring(int, int);
除非参数可以为 null,否则更简单的解决方案是传递引用:
foo(const std::string& str){
std::string temp = str.substring(a, b);
}
这是
由于运算符优先级。元素选择运算符.
比取消引用运算符*
具有更高的优先级,因此编译器实际上将其视为
*(str.substr(...))
有几种方法可以解决这个问题。我建议的方法是不要使用指针,而是使用参数的引用。然后,您不必担心取消引用或可能的空指针。如果您不想修改原始字符串,请使用常量引用。
喜欢
void foo(const std::string& str)
{
// ...
std::string temp = str.substr(...);
// ...
}
然后在没有地址运算符的情况下调用它
std::string str = ...;
foo(str);
相关文章:
- strcpy 在类中无法使用字符串指针
- 如何将字符串指针数组转换为字符串类型的智能指针向量?
- 使用conststd::字符串指针作为函数参数
- 将字符串指针传递到C++和Xcode 11.1中不同线程上运行的函数
- OOP 和字符串指针的奇怪行为
- 在 C++ 中通过字符串指针复制字符串变量中的字符串
- 删除字符串指针在struct中的内存
- 字符串指针的排序向量
- C#C /CLR处理REF参数和字符串指针
- 问题在字符串指针中存储单词
- 如何在C++中从字符串指针中获取字符
- 如何使用字符串指针访问映射的键
- 将字符串指针与 NULL 以及 NULL 字符进行比较的目的
- 如何获取字符串指针的值?
- C++ 字符串* 指针未在控制台中正确打印
- Visual Studio C++ 空字符串指针
- 管理C#中返回的字符串指针
- 指向C++中的字符串指针数组的指针
- 如何将结果集设置为字符串指针
- 如何初始化字符串指针