#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <iterator>
using namespace std;
struct tokens: std:: ctype < char >
{
tokens( ) : std:: ctype < char > ( get_table( ) ) { }
static std:: ctype_base :: mask const * get_table( )
{
typedef std:: ctype < char > cctype;
static const cctype:: mask * const_rc= cctype:: classic_table ( ) ;
static cctype:: mask rc[ cctype:: table_size ] ;
memcpy ( rc, const_rc, cctype:: table_size * sizeof ( cctype:: mask ) ) ;
rc[ ',' ] = std:: ctype_base :: space ;
rc[ ' ' ] = std:: ctype_base :: space ;
return & rc[ 0 ] ;
}
} ;
int main( ) {
std:: string s = "right way, wrong way, correct way" ;
std:: stringstream ss( s) ;
ss.imbue ( std:: locale ( std:: locale ( ) , new tokens( ) ) ) ;
std:: istream_iterator < std:: string > begin( ss) ;
std:: istream_iterator < std:: string > end;
std:: vector < std:: string > vstrings( begin, end) ;
std:: copy ( vstrings.begin ( ) , vstrings.end ( ) ,
std:: ostream_iterator < std:: string > ( std:: cout , "\n " ) ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGl0ZXJhdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHRva2Vuczogc3RkOjpjdHlwZTxjaGFyPiAKewogICAgdG9rZW5zKCk6IHN0ZDo6Y3R5cGU8Y2hhcj4oZ2V0X3RhYmxlKCkpIHt9CgogICAgc3RhdGljIHN0ZDo6Y3R5cGVfYmFzZTo6bWFzayBjb25zdCogZ2V0X3RhYmxlKCkKICAgIHsKICAgICAgICB0eXBlZGVmIHN0ZDo6Y3R5cGU8Y2hhcj4gY2N0eXBlOwogICAgICAgIHN0YXRpYyBjb25zdCBjY3R5cGU6Om1hc2sgKmNvbnN0X3JjPSBjY3R5cGU6OmNsYXNzaWNfdGFibGUoKTsKCiAgICAgICAgc3RhdGljIGNjdHlwZTo6bWFzayByY1tjY3R5cGU6OnRhYmxlX3NpemVdOwogICAgICAgIG1lbWNweShyYywgY29uc3RfcmMsIGNjdHlwZTo6dGFibGVfc2l6ZSAqIHNpemVvZihjY3R5cGU6Om1hc2spKTsKCiAgICAgICAgcmNbJywnXSA9IHN0ZDo6Y3R5cGVfYmFzZTo6c3BhY2U7IAogICAgICAgIHJjWycgJ10gPSBzdGQ6OmN0eXBlX2Jhc2U6OnNwYWNlOyAKICAgICAgICByZXR1cm4gJnJjWzBdOwogICAgfQp9OwoKCmludCBtYWluKCkgewoJCgkKCQoKCglzdGQ6OnN0cmluZyBzID0gInJpZ2h0IHdheSwgd3Jvbmcgd2F5LCBjb3JyZWN0IHdheSI7CglzdGQ6OnN0cmluZ3N0cmVhbSBzcyhzKTsKCXNzLmltYnVlKHN0ZDo6bG9jYWxlKHN0ZDo6bG9jYWxlKCksIG5ldyB0b2tlbnMoKSkpOwoJc3RkOjppc3RyZWFtX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nPiBiZWdpbihzcyk7CglzdGQ6OmlzdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+IGVuZDsKCXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB2c3RyaW5ncyhiZWdpbiwgZW5kKTsKCXN0ZDo6Y29weSh2c3RyaW5ncy5iZWdpbigpLCB2c3RyaW5ncy5lbmQoKSwgCglzdGQ6Om9zdHJlYW1faXRlcmF0b3I8c3RkOjpzdHJpbmc+KHN0ZDo6Y291dCwgIlxuIikpOwoJCglyZXR1cm4gMDsKfQ==
compilation info
prog.cpp: In static member function ‘static const mask* tokens::get_table()’:
prog.cpp:18:71: error: ‘memcpy’ was not declared in this scope
memcpy(rc, const_rc, cctype::table_size * sizeof(cctype::mask));
^
stdout