我怎么能定义一个带字符串的方法呢?
asdfgsdfg:ijtij ijdfgh ija::saf 1999 bp
Run Code Online (Sandbox Code Playgroud)
并返回子字符串
ijtij ijdfgh ija::saf 1999
Run Code Online (Sandbox Code Playgroud)
也就是说,我想要在冒号的第一个实例之间的所有数据,直到找到bp字符组合,在字符串的末尾.
小智 7
string original = "asdfgsdfg:ijtij ijdfgh ija::saf 1999 bp";
size_t s = original.find(":");
size_t e = original.find("bp", s);
string sub = original.substr(s + 1, e - s -1);
cout << sub ;
Run Code Online (Sandbox Code Playgroud)
使用std::string::find查找第一个冒号和冒号后第一个发生的历史“BP”。然后用于std::string::substr获取这些位置之间的子字符串。
#include <iostream>
#include <string>
int main()
{
std::string str = "asdfgsdfg:ijtij ijdfgh ija::saf 1999 bp";
int start = str.find(":");
int end = str.find("bp", start);
std::string substring;
if (start != std::string::npos && end != std::string::npos)
{
substring = str.substr(start + 1, end - start - 1);
}
else
{
// Whatever you want to do if the markers are missing.
}
std::cout << substring;
}
Run Code Online (Sandbox Code Playgroud)
输出在这里。
编辑:根据 MooingDuck 对 stardust_ 答案的评论,目前尚不清楚您对“bp”标记的意图是什么。第一个找到的“bp”实例是否结束了子字符串,还是子字符串总是在原始字符串的最后两个字符之前结束?(在这种情况下,它们是否是“bp”无关紧要)。如果是后者,则修改如下:
#include <iostream>
#include <string>
int main()
{
std::string str = "asdfgsdfg:ijtij ijdfgh ija::saf 1999 bp";
int start = str.find(":");
int end = str.length() - 2; // Changed here
std::string substring;
if (start != std::string::npos && end != std::string::npos)
{
substring = str.substr(start + 1, end - start - 1);
}
else
{
// Whatever you want to do if the markers are missing.
}
std::cout << substring;
}
Run Code Online (Sandbox Code Playgroud)
输出在这里。
| 归档时间: |
|
| 查看次数: |
8063 次 |
| 最近记录: |