To remove characters '#' and '$' you can use standard algorithm std::remove_if. However take into account that if there is for example the following string "12#34" then after removing '#' you will ge "1234". If you need that the resulted string will look as "12 34" or "12:34" then instead of std::remove_if it is better to use std::replace_if.
Below there is a sample code that performs the task. You need to include headers
#include <iostream> #include <cstdlib> #include <cstring> #include <algorithm> int main() { char s[] = "102:$$330:#3133:76531:451:000:$12:44412"; std::cout << s << std::endl; char *p = std::remove_if( s, s + std::strlen( s ), []( char c ) { return ( c == '$' || c == '#' ); } ); *p = '\0'; std::cout << s << std::endl; const size_t N = 8; int a[N]; p = s; for ( size_t i = 0; i < N; i++ ) { a[i] = strtol( p, &p, 10 ); if ( *p == ':' ) ++p; } for ( int x : a ) std::cout << x << ' '; std::cout << std::endl; }
The output is
102:$$330:#3133:76531:451:000:$12:44412 102:330:3133:76531:451:000:12:44412 102 330 3133 76531 451 0 12 44412
elven magicyou are using