私はあなたの両方の質問に答えます(「質問」ごとに1つの質問にそれを保つべきですが)。
ループを停止するには、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標準の2つの機能が含まれています。範囲ベースのforループ。そしてラムダ関数。