C++ 如何在字符串中搜索字符,并删除所述字符

C++ 如何在字符串中搜索字符,并删除所述字符,c++,c++11,C++,C++11,我正在尝试编写一个文字游戏,在文字游戏中,我需要知道我可以使用哪些字母。我有一个包含可用字母的字符串,一开始是“abcdefghijklmnopqrstuvwxyzaeiu”,即整个字母表中有一组额外的元音。我需要能够在字符串中搜索某个字符(我可能希望使用字母“c”),然后假设该字符在字符串中,从字符串中删除该字符。我不完全确定如何做到这一点,但我正在编写一些伪代码 string alphabet = "abcdefghijklmnopqrstuvwxyzaeiou" char input; c

我正在尝试编写一个文字游戏,在文字游戏中,我需要知道我可以使用哪些字母。我有一个包含可用字母的字符串,一开始是“abcdefghijklmnopqrstuvwxyzaeiu”,即整个字母表中有一组额外的元音。我需要能够在字符串中搜索某个字符(我可能希望使用字母“c”),然后假设该字符在字符串中,从字符串中删除该字符。我不完全确定如何做到这一点,但我正在编写一些伪代码

string alphabet = "abcdefghijklmnopqrstuvwxyzaeiou"
char input;
cout << "Please input a character.";
cin >> input;
if (input is in the string)
    {
    remove the letter from the string
    }
else
    {
    cout << "That letter is not available to you."
    }
字符串字母表 字符输入; cout>输入; if(输入在字符串中) { 从字符串中删除字母 } 其他的 { 库特 如何在字符串中搜索字符,并删除所述字符

只需使用,并且:

#包括
#包括
#包括
....
std::string s=…;//您的字符串
char c=..;//要删除的字符
s、 擦除(std::remove(std::begin(s)、std::end(s)、c)、std::end(s));
这是一个C++03版本,以防您使用的是C++11之前的编译器:

#include <string>
#include <algorithm>

....

std::string s = .....; // your string
char c = ....;         // char to be removed
s.erase(std::remove(s.begin(), s.end(), c), s.end());
#包括
#包括
....
std::string s=…;//您的字符串
char c=..;//要删除的字符
s、 擦除(std::remove(s.begin()、s.end()、c)、s.end());

代替你,我将使用不同的方法:

std::map<char, size_t> alphabet = init_alphabet("abc....");
std::map alphabet=init_字母表(“abc…”);
与:

#包括
标准::映射初始字母表(标准::字符串常量和池){
映射结果;
对于(char c:pool){result[c]+=1;}
返回结果;
}
然后,您只需检查角色是否在地图中,而不是疯狂地四处移动角色:

if (alphabet[input] > 0) {
    alphabet[input] -= 1;
} else {
    std::cerr << "The letter '" << input << "' is not available to you.\n";
}
if(字母[输入]>0){
字母表[输入]-=1;
}否则{

std::cerr我尝试了这个,但它不起作用。我得到的错误开始、结束和删除都不是“std”的成员。我尝试了#包括,但没有改变任何东西。@JC2112它是有效的C++11,你也这样标记了这个问题。我马上发布一个C++03版本。很抱歉,我刚才想说的时候一定是无意中将它标记为C++11基本的C++。谢谢。@ JC2112没有“基本C++”。目前,C++是C++ 11。无论如何,我可能已经回答了C++ 11。但是我可能已经提到了它是C++ 11。有一个,我将解释为“没有C++ 11”。这清除了大部分错误,但是我仍然得到“删除”不是“STD”的成员。
#include <map>

std::map<char, int> init_alphabet(std::string const& pool) {
    std::map<char, int> result;
    for (char c: pool) { result[c] += 1; }
    return result;
}
if (alphabet[input] > 0) {
    alphabet[input] -= 1;
} else {
    std::cerr << "The letter '" << input << "' is not available to you.\n";
}