如何解决如何将cin字母与字符串数组的第一个字母进行比较?
我希望程序将用户输入的char与整个字符串数组(仅与字符串的第一个字母)进行比较,并显示所有与输入相同的第一个char的字符串:
using namespace std;
char input;
cin >> input
string thearray[5] = {"hello","this","is","an","array"};
if(input == 'first char of string in the array') {
cout << "ok \n";
}
else {
cout << "error \n";
}
我该怎么做?
解决方法
只需这样做。
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
int main(void) {
char input;
std::cin >> input;
string thearray[5] = {"hello","this","is","an","array"};
size_t size = sizeof(thearray) / sizeof(*thearray);
for (size_t i = 0; i < size; i++) {
if (input == thearray[i][0]) { // if the first character is same as the input
cout << thearray[i] << '\n'; // print the string
}
}
return 0;
}
一种高级方法是使用std::copy_if
。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using std::cin;
using std::cout;
using std::string;
int main(void) {
char input;
std::cin >> input;
string thearray[5] = {"hello","array"};
size_t size = sizeof(thearray) / sizeof(*thearray);
// filter the array
std::vector<string> filtered;
std::copy_if(thearray,thearray + size,std::back_inserter(filtered),[&input](const string& s){ return s[0] == input; });
// print the result
for (const auto& s : filtered) cout << s << '\n';
return 0;
}
,
最简单的方法是使用基于范围的for循环。
例如
#include <iostream>
#include <string>
int main()
{
char input;
std::cin >> input;
std::string thearray[] =
{
"hello","array"
};
for (const auto &s : thearray)
{
if (input == s[0]) std::cout << s << ' ';
}
std::cout << '\n';
}
例如,如果输入字母'h'
,则输出为
hello
如您所见,该程序非常简单,清晰且易于阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。