1// 1999-06-10 bkoz 2 3// Copyright (C) 1994-2015 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// You should have received a copy of the GNU General Public License along 17// with this library; see the file COPYING3. If not see 18// <http://www.gnu.org/licenses/>. 19 20// 21.3.5.6 basic_string::replace 21 22#include <string> 23#include <algorithm> // for std::find 24#include <testsuite_hooks.h> 25 26bool test01(void) 27{ 28 bool test __attribute__((unused)) = true; 29 typedef std::string::size_type csize_type; 30 typedef std::string::const_reference cref; 31 typedef std::string::reference ref; 32 33 const char str_lit01[] = "ventura, california"; 34 const std::string str01(str_lit01); 35 std::string str02("del mar, california"); 36 std::string str03(" and "); 37 std::string str05; 38 39 // string& replace(size_type pos, size_type n, const string& string) 40 // string& replace(size_type pos1, size_type n1, const string& string, 41 // size_type pos2, size_type n2) 42 // string& replace(size_type pos, size_type n1, const char* s, size_type n2) 43 // string& replace(size_type pos, size_type n1, const char* s) 44 // string& replace(size_type pos, size_type n1, size_type n2, char c) 45 // string& replace(iterator it1, iterator it2, const string& str) 46 // string& replace(iterator it1, iterator it2, const chat* s, size_type n) 47 // string& replace(iterator it1, iterator it2, const chat* s) 48 // string& replace(iterator it1, iterator it2, size_type n, char c) 49 // template<typename InputIter> 50 // string& replace(iterator it1, iterator it2, InputIter j1, InputIter j2) 51 52 // with mods, from tstring.cc, from jason merrill, et. al. 53 std::string X = "Hello"; 54 std::string x = X; 55 56 char ch = x[0]; 57 VERIFY( ch == 'H' ); 58 59 std::string z = x.substr(2, 3); 60 VERIFY( z == "llo" ); 61 62 x.replace(2, 2, "r"); 63 VERIFY( x == "Hero" ); 64 65 x = X; 66 x.replace(0, 1, "j"); 67 VERIFY( x == "jello" ); 68 69 int ar[] = { 'H', 'e', 'l', 'l', 'o' }; 70 x.replace(std::find(x.begin(), x.end(), 'l'), 71 std::find(x.rbegin(), x.rend(), 'l').base(), ar, 72 ar + sizeof(ar) / sizeof(ar[0])); 73 VERIFY( x == "jeHelloo" ); 74 return test; 75} 76 77int main() 78{ 79 test01(); 80 return 0; 81} 82