关于#string筛选器#的问题,如何解决?(语言-c++)

制作一个string筛选器,对从键盘输入的一组5个string数据,根据指定的长度区间进行筛选并输出。

测试输入:
aa
bbb
cccc
ddd
ee
2
3

预期输出:
aa
bbb
ddd
ee

测试输入:
aa
bbb
ccc
dddd
ee
1
2
预期输出:
aa
ee

请补全如下代码:


#include
#include
using namespace std;

//C++ string类的用法 
//stringfilterbylength根据用户设定的长度区间,筛选出符合条件的字符串并输出
//此处给出stringfilterbylength函数的定义 


//--------------------------------------------------------
int main()
{
    string s[5];
    int i;
    int l1, l2; //分别表示筛选器的长度区间 
    for(i = 0; i < 5; i++)
    {
        //此处补全代码,用键盘输入字符串至字符串数组s中
        
        //---------------------------------------------
    }
    //输入长度区间
    cin >> l1 >> l2; 
    //此处调用stringfilterbylength方法
    stringfilterbylength(s, 5, l1, l2);
    
    
    return 0;
} 
#include <iostream>
#include <string>
using namespace std;
void stringfilterbylength(string s[], int n, int l1, int l2)
{
    for(int i = 0; i < n; i++)
    {
        int len = s[i].length();
        if(len >= l1 && len <= l2)
        {
            cout << s[i] << endl;
        }
    }
}

int main()
{
    string s[5];
    int i;
    int l1, l2;
    for(i = 0; i < 5; i++)
    {
        cin >> s[i];
    }
    cin >> l1 >> l2;
    stringfilterbylength(s, 5, l1, l2);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/249000
  • 这篇博客你也可以参考下:C++中求string类型字符串的长度的方法
  • 除此之外, 这篇博客: c++ string超详细总结中的 5.string对象的比较 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    通过ASCLL码比较,除了可以用 <、<=、==、!=、>=、> 运算符比较 string 对象外,string 类还有 compare 成员函数,可用于比较字符串。compare 成员函数有以下返回值:

    • 小于 0 表示当前的字符串小;
    • 等于 0 表示两个字符串相等;
    • 大于 0 表示另一个字符串小。
    string s1("hello"); 
    s2("hello, world");
    int n = s1.compare(s2);
    n = s1.compare(1, 2, s2, 0, 3);  //比较s1的子串 (1,2) 和s2的子串 (0,3)
    n = s1.compare(0, 2, s2);  // 比较s1的子串 (0,2) 和 s2
  • 您还可以看一下 王桂林老师的华为工程师,带你实战C++视频精讲课程中的 Day4王桂林老师原创视频-自实现String类拷贝构造器小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    以上代码已经实现了问题所要求的功能,基本步骤如下:

    1.定义字符串数组和长度的最小值和最大值:

    string str[5]; int min_length, max_length;

    2.从键盘读入5个字符串:

    for(int i=0; i<5; i++) { getline(cin, str[i]); }

    3.从键盘读入长度的最小值和最大值:

    cin >> min_length >> max_length;

    4.遍历每个字符串,输出符合条件的字符串:

    for(int i=0; i<5; i++) { if(str[i].length() >= min_length && str[i].length() <= max_length) { cout << str[i] << endl; } }

    关键点:

    1.使用getline(cin, str[i])函数从键盘输入字符串,可以保证输入的字符串包含空格。

    2.使用str[i].length()函数获取字符串的长度。

    3.使用if语句判断字符串的长度是否在指定区间。

    4.使用cout << str[i] << endl;输出符合条件的字符串,注意要在换行符后加上endl。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^