[cpp] [string] swap wyrazów
Ostatnio zmodyfikowano 2018-02-16 11:59
aaadam Temat założony przez niniejszego użytkownika |
[cpp] [string] swap wyrazów » 2018-02-15 16:11:16 witam, chcę w stringu (dużym) zamienić 'i' na 'oraz' i na odwrót, gdy odpowiednio vektor<int> vek == się 0 lub 1 gdzieś robię błąd i głupieje już ... help :) a o to kod :
string myString = argv[ 3 ]; bitset < 8 > bb; vector < int > vek; for( std::size_t i = 0; i < myString.size(); ++i ) { cout << static_cast < char >( bitset < 8 >( myString[ i ] ).to_ulong() ) << " "; cout << bitset < 8 >( myString[ i ] ); bb = bitset < 8 >( myString[ i ] ); for( int j = 7; j >= 0; j-- ) { if( bb[ j ] == 1 ) vek.push_back( 1 ); else if( bb[ j ] == 0 ) vek.push_back( 0 ); } cout << endl; } cout << "weksize()" << vek.size() << endl; for( int i = 0; i < vek.size(); i++ ) { if( i % 8 == 0 && i != 0 ) cout << " "; cout << vek[ i ]; } cout << endl << endl; std::ifstream t( argv[ 1 ] ); std::string str(( std::istreambuf_iterator < char >( t ) ), std::istreambuf_iterator < char >() ); int insert_counter = 0; bool is_inserted = 0;
int shift = atoi( argv[ 4 ] ); cout << endl << str << endl; for( int i = 1; i < str.size(); i++ ) { if( str[ i ] == 'i' && str[ i + 1 ] == ' ' && str[ i - 1 ] == ' ' ) { if( vek[ insert_counter ] == 1 ) { str.erase( i, 1 ); str.insert( i, string( "oraz" ) ); i += 3; insert_counter += 1; continue; } } else if( str[ i ] == 'o' && str[ i + 1 ] == 'r' && str[ i + 2 ] == 'a' && str[ i + 3 ] == 'z' && str[ i - 1 ] == ' ' && str[ i + 4 ] == ' ' ) { if( vek[ insert_counter ] == 0 ) { str.insert( i, string( "i" ) ); str.erase( i + 1, 4 ); insert_counter += 1; i -= 3; } } }
|
|
pekfos |
» 2018-02-15 17:04:18 Twoje warunki są błędne i przekraczają zakres tablicy. |
|
aaadam Temat założony przez niniejszego użytkownika |
» 2018-02-16 11:59:23 dzięki, dałem radę, chory jestem i mój mózg juz nie funkcjonuje tak jak powinien pozdro taki warunek powinien być mniej więcej : if( str[ i ] == 'i' && str[ i + 1 ] == ' ' && str[ i - 1 ] == ' ' ) { cout << "* " << vek[ insert_counter ] << " " << insert_counter; if( vek[ insert_counter ] == 1 ) { cout << "^"; str.erase( i, 1 ); str.insert( i, string( "oraz" ) ); i += 3; insert_counter += 1; continue; } else insert_counter++; }
|
|
« 1 » |