Bestimmte Zeichen in einer Zeichenkette zulassen

fujitsufan

Erfahrenes Mitglied
Hallo,
ich bin auf der Suche nach einer kurzen Syntax, die aus einer Zeichenkette
Code:
cahr cTemp[128] = "Buchstaben und 0123456789";
nur numerische Zeichen zulässt.
Sicherlicht lässt sich dieses Problem mit 2 Schleifen und Zeigers auf Arrays lösen, ist aber nicht so schön.
Die zulässigen numerischen Zeichen dürfen auch in einem Array stehen.
Code:
char cNum[11] = "0123456789";
Ich dachte schon an die Regual Expressions, funktioniert aber leider nicht.
Die Funktion wird nicht gefunden.
Welchen Header müsst ich dazu einfügen?
Code:
string strTest;
strTest = StringRegExpReplace(strTest, "[^0-9]", "");

Vielen Dank!
fujitsufan
 

MCoder

Erfahrenes Mitglied
Hallo,

keine Ahnung, wo du die Funktion "StringRegExpReplace" hervorgezaubert hast.

Als Lösung fällt mir die Verwendung von remove_copy_if ein:
C++:
#include <algorithm>
#include <string>

bool str_remove(int i) { return !isdigit(i); }

int main()
{
    std::string str1 = "Buchstaben und 0123456789";
    std::string str2;

    std::remove_copy_if( str1.begin(), str1.end(), std::back_inserter(str2), str_remove );
    
    return 0;    
}
Steht ein moderner Compiler zur Verfügung (mindestens VC 2010 mit SP1) kann "str_remove" auch als lamda-Ausdruck verwendet werden:
C++:
std::remove_copy_if( str1.begin(), str1.end(), std::back_inserter(str2), [](int i) { return !isdigit(i); } );
Gruß
MCoder