// stringte.cpp - testataan string-luokkaa #include #include #include // vain printf-testejä varten #include // s2 = s3("C.*5"); varten #define T(s) cout << #s" = |" << s << "|\n" /* T(s3) => s3 = |kissa| */ int main(void) { try { string s1("Kissa"),s2("istuu"),s3,vert; if ( s1 < s2 ) vert = " < " ; else vert = " >= "; int eq = s1.compare(s2); cout << s1 << vert << s2 << " : "<< eq << '\n';// => Kissa < istuu : -30 s3.set_case_sensitive(0); if ( s1 < s2 ) vert = " < " ; else vert = " >= "; eq = s1.compare(s2); cout << s1 << vert << s2 << " : "<< eq << '\n';// => Kissa >= istuu : 2 s3 = s1 + " " + s2; T(s3); // => |Kissa istuu| s3 += " puussa"; T(s3); // => |Kissa istuu puussa| cout << "Anna jono>"; cin >> s3; // Jos kirjoitetaan Aku Ankka T(s3); // tulostuu nyt Aku ja loput jää! cout << "Anna jono>"; s3.read_line(cin); // Jos kirjoitetaan Aku Ankka T(s3); // tulostuu nyt Aku Ankka s3.skip_whitespace(0); // Nyt voidaan syöttää jopa tyhjä cout << "Anna jono>"; getline(cin,s3); // Jos kirjoitetaan Aku Ankka T(s3); // tulostuu nyt Aku Ankka char c = s1[2]; T(c); // => |s| int len = s1.length(); T(len);// => |5| s3 = 'A'; T(s3); // => |A| // c = s3; T(c) ; // Ei toimi, toive => |A| // s3 = 5; T(s3); // Ei toimi, toive => |5| // s3 = s2+5; T(s3); // Ei toimi, toive => |istuu5| // int j = s3 = "12"; T(j); // Ei Toimi, toive => |12| s3 = "0123456"; s3.append("ABCDEF",2,2); T(s3); // => |0123456CD| int paikka = s3.find((string)"34"); // (string) tarvitaan jos regexp.h T(paikka); // => |3| s2 = s3.substr(2,3); T(s2); // => |234| s3.replace(5,3,"ABCDEF"); T(s3); // => |01234ABCDEFD| s3.remove(5,6); T(s3); // => |01234D| s3.insert(5,"56C"); T(s3); // => |0123456CD| s3[2] = 'C'; T(s3); // => |01C3456CD| // printf("s2 = |%s|\n",&s2); // huonosti käy! printf("s2 = |%s|\n",s2.c_str() ); // => |C34| char s4[10]; // strcpy(s4,s2); // Ei toimi! strcpy(s4,s2.c_str()); T(s4); // => |C34| s3.copy(s4,2); T(s4); // => |014| ??? Ei toimi oikein??? unsigned h1 = s1.hash(); T(h1); // => |12559| Palauttaa hash-arvon unsigned h2 = s2.hash(); T(h2); // => |13172| unsigned h3 = s3.hash(); T(h3); // => |29756| if ( s3.contains("34") ) cout << "Juu\n"; // => Juu s2 = s3("C.*5"); T(s2); // => |C345| C, mitä tahansa, 5 s2 = s3(2,3); T(s2); // => |C34| s1 = " Kissa istuu "; s3 = s1.strip(s1.Both,' '); T(s3); // => |Kissa istuu| s1.to_upper(); T(s1); // => | KISSA ISTUU | int hukka = s2.get_max_waste(); T(hukka); // => |63| c = s2[12]; T(c); // Tulee throw(outofrange) } catch ( string::outofrange ) { cout << "Liian iso indeksi\n"; } return 0; }