如何使用子字符串的位置作为起点来显示字符串的内容?

发布于 2024-11-04 02:02:09 字数 44 浏览 0 评论 0原文

是否可以从使用 string.find 获得的位置到字符串末尾计算字符串。

Is it posible to cout a string from a position gained by using string.find to the end of the string.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

且行且努力 2024-11-11 02:02:09
std::cout << yourStr.substr(yourStr.find("position"));

查看 substr 方法参考

std::cout << yourStr.substr(yourStr.find("position"));

Check out the substr method reference.

孤蝉 2024-11-11 02:02:09

当然。 string::find 返回一个索引,而 string::substr 获取起始位置(和结束位置,但在这种情况下您可以使用默认值)的索引,因此你可以这样做:

std::cout << mystring.substr(mystring.find("Whatever"));

Sure. string::find returns an index and string::substr takes an index for the starting position (and ending position, but in this case you can use the default), so you could do something like this:

std::cout << mystring.substr(mystring.find("Whatever"));
野鹿林 2024-11-11 02:02:09

这当然是可能的,而且方式不止一种。 string.find() 返回一个位置,因此

#include <iostream>
#include <string>
int main()
{
    std::string str = "This is a test";
    std::string::size_type pos = str.find("test");
    if(pos != std::string::npos)
        std::cout << str.substr(pos) << '\n';
}

如果您担心 substr() 会创建不必要的临时文件,则可以使用迭代器

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
    std::string str = "This is a test";
    std::string::size_type pos = str.find("test");
    if(pos != std::string::npos)
        copy(str.begin() + pos, str.end(),
             std::ostream_iterator<char>(std::cout, ""));
}

It is certainly possible, and in more ways than one. string.find() returns a position, so

#include <iostream>
#include <string>
int main()
{
    std::string str = "This is a test";
    std::string::size_type pos = str.find("test");
    if(pos != std::string::npos)
        std::cout << str.substr(pos) << '\n';
}

or with iterators if you're afraid substr() will create an unnecessary temporary

#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
int main()
{
    std::string str = "This is a test";
    std::string::size_type pos = str.find("test");
    if(pos != std::string::npos)
        copy(str.begin() + pos, str.end(),
             std::ostream_iterator<char>(std::cout, ""));
}
舂唻埖巳落 2024-11-11 02:02:09

string.find 返回索引的 size_t在字符串中找到您要搜索的内容。如果不是 npos,您可以将其减去:

size_t pos = str.find("whatever");
if (pos != std::string::npos) {
  std::cout << str.substr(pos);
}

string.find returns a size_t for the index in the string where it finds what you were searching for. If it's not npos, you can substr it:

size_t pos = str.find("whatever");
if (pos != std::string::npos) {
  std::cout << str.substr(pos);
}
半边脸i 2024-11-11 02:02:09
#include <iostream>
#include <string>
using namespace std;

int main() {
    const string s("So close no matter how far");
    const string::size_type pos = s.find("no");
    if (pos != string::npos) {
        cout << &s[pos] << endl;
    }
}
#include <iostream>
#include <string>
using namespace std;

int main() {
    const string s("So close no matter how far");
    const string::size_type pos = s.find("no");
    if (pos != string::npos) {
        cout << &s[pos] << endl;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文