3 // Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
4 // 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 2, or (at your option)
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING. If not, write to the Free
19 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22 // 21.3.5.6 basic_string::replace
25 #include <algorithm> // for std::find
26 #include <testsuite_hooks.h>
30 bool test __attribute__((unused)) = true;
31 typedef std::wstring::size_type csize_type;
32 typedef std::wstring::const_reference cref;
33 typedef std::wstring::reference ref;
35 const wchar_t str_lit01[] = L"ventura, california";
36 const std::wstring str01(str_lit01);
37 std::wstring str02(L"del mar, california");
38 std::wstring str03(L" and ");
41 // wstring& replace(size_type pos, size_type n, const wstring& string)
42 // wstring& replace(size_type pos1, size_type n1, const wstring& string,
43 // size_type pos2, size_type n2)
44 // wstring& replace(size_type pos, size_type n1, const wchar_t* s, size_type n2)
45 // wstring& replace(size_type pos, size_type n1, const wchar_t* s)
46 // wstring& replace(size_type pos, size_type n1, size_type n2, wchar_t c)
47 // wstring& replace(iterator it1, iterator it2, const wstring& str)
48 // wstring& replace(iterator it1, iterator it2, const wchar_t* s, size_type n)
49 // wstring& replace(iterator it1, iterator it2, const wchar_t* s)
50 // wstring& replace(iterator it1, iterator it2, size_type n, char c)
51 // template<typename InputIter>
52 // wstring& replace(iterator it1, iterator it2, InputIter j1, InputIter j2)
54 // with mods, from tstring.cc, from jason merrill, et. al.
55 std::wstring X = L"Hello";
61 std::wstring z = x.substr(2, 3);
62 VERIFY( z == L"llo" );
64 x.replace(2, 2, L"r");
65 VERIFY( x == L"Hero" );
68 x.replace(0, 1, L"j");
69 VERIFY( x == L"jello" );
71 wchar_t ar[] = { L'H', L'e', L'l', L'l', L'o' };
72 x.replace(std::find(x.begin(), x.end(), L'l'),
73 std::find(x.rbegin(), x.rend(), L'l').base(), ar,
74 ar + sizeof(ar) / sizeof(ar[0]));
75 VERIFY( x == L"jeHelloo" );