0

特定の文字列があるとしましょう:

string a[]={"ab","cd","ef"}

文字列の最初の文字を入力するときに特定の文字列が必要です。例:

input: c
output: "cd"

私が考えていたのはそれです:

したがって、入力値にcharxを割り当てたとします。次に、ループを使用してリストを調べますが、char xがループを停止し、特定の文字列を出力する方法に固執しています。

もう1つの質問は、文字列内にある文字を見つけるのがどのように異なるかということです。たとえば、入力:dおよび出力: "cd"

4

1 に答える 1

2

私はあなたの両方の質問に答えます(「質問」ごとに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ループ。そしてラムダ関数

于 2012-09-19T06:03:12.493 に答える