制作一个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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!通过ASCLL码比较,除了可以用 <、<=、==、!=、>=、> 运算符比较 string 对象外,string 类还有 compare 成员函数,可用于比较字符串。compare 成员函数有以下返回值:
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
以上代码已经实现了问题所要求的功能,基本步骤如下:
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。