gpt4 book ai didi

c++ - 在循环中检测字符串参数

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:52 24 4
gpt4 key购买 nike

该程序使用 getline 获取一个字符串,然后将该字符串传递给一个函数,该函数将字符串存储到由空格分隔的子字符串中。我只是通过循环读取字符来做到这一点。

但是,现在我正在尝试传递第二个字符串参数,如果循环遇到第二个字符串参数中的字符,它将字符串分隔成子字符串。这是我目前所拥有的。

#include "std_lib_facilities.h"

vector<string> split(const string& s, const string& w) // w is second argument
{
vector<string> words;
string altered;
for(int i = 0; i < s.length(); ++i)
{
altered+=s[i];
if(i == (s.length()-1)) words.push_back(altered);
else if(s[i] == ' ')
{
words.push_back(altered);
altered = "";
}
}

return words;
}



int main()
{
vector<string> words;
cout << "Enter words.\n";
string word;
getline(cin,word);
words = split(word, "aeiou"); // this for example would make the letters a, e, i, o,
// and u divide the string
for(int i = 0; i < words.size(); ++i)
cout << words[i];
cout << endl;
keep_window_open();
}

但是,显然我不能做类似的事情

if(s[i] == w)

因为 s[i] 是一个字符而 w 是一个字符串。我是否需要使用 stringstream 来解析字符串而不是我实现的循环?我实际上玩过 stringstream,但真的不知道它有什么帮助,因为无论哪种方式,我都必须逐一读取字符。

附言split 的参数必须作为字符串传递,并且 main() 中的输入形式必须是一个 getline。

最佳答案

std::string::find_first_of .这使您可以轻松地向 std::string 对象询问另一个字符串对象中任何字符的下一个位置。

例如:

string foo = "This is foo";
cout << foo.find_first_of("aeiou"); // outputs 2, the index of the 'i' in 'This'
cout << foo.find_first_of("aeiou", 3); // outputs 5, the index of the 'i' in 'is'

编辑:糟糕,链接错误

关于c++ - 在循环中检测字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1202883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com