-4

「Hello world 1 2 3」のような文字列があり、「Hello World」のような文字列を取得したい。そのための機能を知っていますか?

4

3 に答える 3

3

最初の概算として、すべての数字を削除して結果を新しい文字列に入れると仮定すると、次のようなものから始めます。

std::remove_copy_if(your_string.begin(), your_string.end(), 
                    std::back_inserter(new_string),
                    [](unsigned char ch) { return isdigit(ch); });
于 2013-10-28T18:04:07.767 に答える
1

文字列からすべての数字を削除

string x
x.erase(
  std::remove_if(x.begin(), x.end(), &isdigit), 
  x.end());
于 2013-10-28T18:04:34.183 に答える
0

これは通常、std::ctype<char>空白文字を含む英数字を分類するファセットを使用して行われます。

#include <locale>
#include <functional>

template <class charT = char>
bool digit_removal(charT c, std::locale loc)
{
    return std::use_facet<std::ctype<charT>>(loc).is(
        std::ctype_base::digit, c);
}

int main()
{
    std::string var = "Hello 123";
    var.erase(
        std::remove_if(var.begin(), var.end(),
          std::bind(&digit_removal<char>, std::placeholders::_1, std::locale())),
    var.end());


    std::cout << var; // "Hello "
}
于 2013-10-28T18:18:34.307 に答える