假设我们有一个特定的字符串:
string a[]={"ab","cd","ef"}
当我们输入字符串的第一个字符时,我们想要一个特定的字符串:例如:
input: c
output: "cd"
我在想的是:
所以假设我们为输入值分配 char x 。然后使用循环遍历列表,但我不知道 char x 将如何停止循环并打印特定的字符串。
另一个问题是在字符串中找到一个字母会有什么不同。例如输入:d 和输出:“cd”
假设我们有一个特定的字符串:
string a[]={"ab","cd","ef"}
当我们输入字符串的第一个字符时,我们想要一个特定的字符串:例如:
input: c
output: "cd"
我在想的是:
所以假设我们为输入值分配 char x 。然后使用循环遍历列表,但我不知道 char x 将如何停止循环并打印特定的字符串。
另一个问题是在字符串中找到一个字母会有什么不同。例如输入:d 和输出:“cd”
我将回答您的两个问题(即使您应该将每个“问题”保留为一个问题)。
要停止循环,请使用该break
语句。
要在字符串中查找字符(或字符串),请使用该std::string::find
函数。
现在将它们组合起来:
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
std::string a[] = { "ab", "cd", "ef", "ce" };
char x;
std::cout << "Enter a letter: ";
std::cin >> x;
// If you want to stop as soon as you find a string with the letter
// you have to loop manually
std::cout << "\nFind first string containing letter:\n";
for (std::string s : a)
{
if (s.find(x) != std::string::npos)
{
std::cout << "Letter '" << x << "' found in string \"" << s << "\"\n";
break; // Stop the loop
}
}
// If you want to print all strings containing the letter you can
// use the `std::for_each` function
std::cout << "\nFind all strings containing letter:\n";
std::for_each(std::begin(a), std:end(a), [x](const std::string &s) {
if (s.find(x) != std::string::npos)
std::cout << "Letter '" << x << "' found in string \"" << s << "\"\n";
});
}
注意:上面的代码包含来自“新” C++11标准的两个特性:基于范围的 for-loops;和lambda 函数。