如何在C / C ++中将掩码应用于字符串?

时间:2013-12-09 18:04:54

标签: c++ c string mask

我已经完成了家庭作业,但我不知道该怎么做。

输入文件是从' a'的字母中随机生成的。到了'。用户将仅使用0/1键入掩码,例如011011,其中1表示元音,0表示辅音。

输出将是输入中与用户指定的掩码匹配的所有匹配项(例如,对于011011输出将是abbezz)。

知道如何制作这个吗?我不会要求代码,但只能以最简单的方式在c / c ++中实现这一点。

由于

3 个答案:

答案 0 :(得分:1)

我的理解是要求是找到与面具匹配的所有字母序列。 鉴于面具:010(辅音,元音,辅音)
以下是几个词的匹配:

"are" - fail, first character is a vowel.  
"mat" - pass, 'm' is a consonant, 'a' is a vowel, 't' is a consonant.  
"mate" - fail, too many letters.  

你需要有一些功能来测试元音或辅音的字母。

还要考虑使用状态机。如果测试失败,您希望返回到开始状态。

首先逐步记下您的算法。想出几个测试用例来验证你的算法。算法运行后,编码。使用相同的测试用例来验证程序。

答案 1 :(得分:0)

我仍然不知道你想要完成什么,但也许知道一旦你在std :: string中输入,你可以使用迭代器和任何算法迭代字符。以下是std::for_each的示例:

#include <algorithm>
#include <iostream>
#include <string>

void applyMask(std::string::reference aCharacter)
{
    // apply your mask here, character by character

    if ('a' == aCharacter) {
        aCharacter = 'A';
    }
}

int main()
{
    std::string s("stackoverflow");

    std::for_each(s.begin(), s.end(), &applyMask);

    std::cout << s << std::endl;
}

您可能需要查看std::transform,例如http://www.cplusplus.com/reference/algorithm/transform/

答案 2 :(得分:0)

根据您的规则将字符串映射到0/1,并在新字符串中搜索与掩码匹配的子字符串。