我怎样才能找到字符串中字符的位置?例如,如果我输入“abc*ab”,我想创建一个只包含“abc”的新字符串。你能帮我解决这个问题吗?
bvpmtnay1#
C++标准字符串提供了一个find方法:
find
s.find(c)
返回字符c的第一个示例在字符串s或std::string::npos中的位置,以防该字符根本不存在。您也可以传递搜索的起始索引;也就是说
c
s
std::string::npos
s.find(c, x0)
将返回字符c的第一个索引,但从位置x0开始搜索。
x0
ep6jt1vc2#
std::find将迭代器返回到它找到的第一个元素,该元素与您要查找的元素进行比较(如果没有找到任何元素,则返回第二个参数,在本例中为结束迭代器)。您可以使用迭代器构造std::string。
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; }
rur96b6h3#
如果你正在处理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算法将返回出现的位置。
yeotifhr4#
详细说明现有答案,您可以使用string.find()和string.substr():
string.find()
string.substr()
#include <iostream> #include <string> int main() { std::string s = "abc*ab"; size_t index = s.find("*"); if (index != std::string::npos) { std::string prefix = s.substr(0, index); std::cout << prefix << "\n"; // => abc } }
4条答案
按热度按时间bvpmtnay1#
C++标准字符串提供了一个
find
方法:返回字符
c
的第一个示例在字符串s
或std::string::npos
中的位置,以防该字符根本不存在。您也可以传递搜索的起始索引;也就是说将返回字符
c
的第一个索引,但从位置x0
开始搜索。ep6jt1vc2#
std::find
将迭代器返回到它找到的第一个元素,该元素与您要查找的元素进行比较(如果没有找到任何元素,则返回第二个参数,在本例中为结束迭代器)。您可以使用迭代器构造std::string
。rur96b6h3#
如果你正在处理
std::string
类型,那么很容易找到一个字符的位置,通过使用std::find
算法是这样的:**注意:**如果在
std::string
中多次找到您的字符,则find
算法将返回出现的位置。yeotifhr4#
详细说明现有答案,您可以使用
string.find()
和string.substr()
: