如何在字符串中找到字符的位置?防爆。如果我输入“abc * ab”,我想用“abc”创建一个新字符串。你能解决我的问题吗?
答案 0 :(得分:4)
std::find
向它找到的第一个元素返回一个迭代器,它与你要查找的元素相等(如果它没有找到任何东西,则返回第二个参数,在本例中是结束迭代器。)你可以使用迭代器构造std::string
。
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string s = "abc*ab";
std::string s2(s.begin(), std::find(s.begin(), s.end(), '*'));
std::cout << s2;
return 0;
}
答案 1 :(得分:3)
C ++标准字符串提供find
方法:
s.find(c)
将字符c
的第一个实例的位置返回到字符串s
或std::string::npos
,以防该字符根本不存在。您还可以传递搜索的起始索引;即。
s.find(c, x0)
将返回字符c
的第一个索引,但从位置x0
开始搜索。
答案 2 :(得分:0)
如果您使用的是std::string
类型,那么使用std::find
算法就可以很容易地找到角色的位置:
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
string first_string = "abc*ab";
string truncated_string = string( first_string.cbegin(), find( first_string.cbegin(), first_string.cend(), '*' ) );
cout << truncated_string << endl;
}
注意:如果在std::string
中多次找到您的角色,则find
算法将返回该位置的位置。