0

假设我们有一个特定的字符串:

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

当我们输入字符串的第一个字符时,我们想要一个特定的字符串:例如:

input: c
output: "cd"

我在想的是:

所以假设我们为输入值分配 char x 。然后使用循环遍历列表,但我不知道 char x 将如何停止循环并打印特定的字符串。

另一个问题是在字符串中找到一个字母会有什么不同。例如输入:d 和输出:“cd”

4

1 回答 1

2

我将回答您的两个问题(即使您应该将每个“问题”保留为一个问题)。

要停止循环,请使用该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 函数

于 2012-09-19T06:03:12.493 回答