gpt4 book ai didi

指针上的 C++ 子串

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:58 26 4
gpt4 key购买 nike

在 C++ 中是否可以创建一个子字符串作为指向与原始字符串相同的内存的指针?

假设我有一个字符串 s = "just testing" 和一个函数 f。我希望函数 f 返回一个常量字符串对象(用户无法更改它),它将是 s 的子字符串,我希望 f 以最有效的方式创建此子字符串方式。

我唯一的想法是返回一对指针 - 在子字符串的开头和结尾,但我很想给最终用户 f 返回的“感觉”一个对象,他可以打印它,迭代它等等。

在 C++ 中可以吗?

最佳答案

是的,这是可能的。

您应该编写自己的类作为子字符串开头和结尾的包装器。

这段代码并不完整,但指明了方向。

class string_ref
{
std::string::iterator b, e; // begin and end
public:
string_ref(std::string::iterator b, std::string::iterator e) : b(b), e(e){}

std::string to_string() const {
return std::string(b, e);
}

std::string::iterator begin() const {
return b;
}

std::string::iterator end() const {
return e;
}
// ... Code to complete this class ... //
};

std::ostream &operator<<(std::ostream &out, const string_ref &str) {
// out << str.to_string();
for (std::string::iterator i = str.begin(); i != str.end(); i++) cout << *i;
return out;
}

int main() {
std::string s = "Hello";
string_ref sr(s.begin(), next(s.begin(),3)); // pick first 3 charaters
cout << sr << endl; // print it by cout
}

您可以简单地迭代和打印它。

关于指针上的 C++ 子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15989381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com