如何在 C/C++ 中对字符串应用掩码? [关闭]

Posted

技术标签:

【中文标题】如何在 C/C++ 中对字符串应用掩码? [关闭]【英文标题】:How to apply mask to string in C/C++? [closed] 【发布时间】:2013-12-09 18:04:54 【问题描述】:

我被分配了一项家庭作业,但我不知道具体要做什么。

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

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

知道怎么做吗?我不要求代码,而只是要求如何在 c/c++ 中实现这一点的最简单方法。

谢谢

【问题讨论】:

请更清楚地描述问题。最好提供示例。 敷面膜是为了什么?假设是什么输出? 抱歉,太困了,更新了。 如果这是家庭作业,你的课是C还是C++?语言不一样,你应该避免标记两者。 【参考方案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.  

您将需要一些函数来测试字母的元音或辅音。

还可以考虑使用状态机。如果测试失败,您想回到起始状态。

先一步一步写下你的算法。拿出几个测试用例来验证你的算法。算法工作后,将其编码。使用相同的测试用例来验证程序。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

我仍然不知道你想要完成什么,但也许知道一旦你在 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("***");

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

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

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

【讨论】:

以上是关于如何在 C/C++ 中对字符串应用掩码? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中对图像应用缩放、拖动和旋转[关闭]

如何在 C/C++ 中对二维数组求和

如何在 Spring 3 MVC 应用程序中对文件上传进行病毒扫描[关闭]

如何在 JavaScript 中对文本框进行验证 [关闭]

如何在Linux中对文件进行别名或重命名?[已关闭]

如何使用python获取ip和子网掩码地址[关闭]