在字符串C ++中查找字符位置

时间:2014-03-08 09:16:28

标签: c++ string

如何在字符串中找到字符的位置?防爆。如果我输入“abc * ab”,我想用“abc”创建一个新字符串。你能解决我的问题吗?

3 个答案:

答案 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的第一个实例的位置返回到字符串sstd::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算法将返回该位置的位置。