1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/* ****************************************************************************
* string -- C++ string.h wrapper.
* Copyright (C) 2017 Thomas "Cakeisalie5" Touhey <thomas@touhey.fr>
*
* This file is part of libcarrot.
* libcarrot is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3.0 of the License,
* or (at your option) any later version.
*
* libcarrot is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the libcarrot; if not, see <http://www.gnu.org/licenses/>.
* ************************************************************************* */
#if __USE_CXX98 && !defined(_STRING_HPP) && !defined(_STRING_)
# define _STRING_HPP 1
# define _STRING_ 1
# include <cdefs.h>
# include <string.h>
/* prototype the class. */
class string;
/* ************************************************************************* */
/* Operators */
/* ************************************************************************* */
/* Concatenation. */
string operator + (const string &lhs, const string &rhs);
string operator + (const char *lhs, const string &rhs);
string operator + (char lhs, const string &rhs);
string operator + (const string &lhs, const char *rhs);
string operator + (const string &lhs, char rhs);
/* Comparisons. */
bool operator < (const string &lhs, const string &rhs);
bool operator <= (const string &lhs, const string &rhs);
bool operator == (const string &lhs, const string &rhs);
bool operator != (const string &lhs, const string &rhs);
bool operator >= (const string &lhs, const string &rhs);
bool operator > (const string &lhs, const string &rhs);
bool operator < (const char *lhs, const string &rhs);
bool operator <= (const char *lhs, const string &rhs);
bool operator == (const char *lhs, const string &rhs);
bool operator != (const char *lhs, const string &rhs);
bool operator >= (const char *lhs, const string &rhs);
bool operator > (const char *lhs, const string &rhs);
bool operator < (const string &lhs, const char *rhs);
bool operator <= (const string &lhs, const char *rhs);
bool operator == (const string &lhs, const char *rhs);
bool operator != (const string &lhs, const char *rhs);
bool operator >= (const string &lhs, const char *rhs);
bool operator > (const string &lhs, const char *rhs);
extern void swap(string &lhs, string &rhs);
istream & operator >> (istream &is, string &str);
ostream & operator << (ostream &os, const string &str);
istream & getline (istream &is, string &str, char delim);
istream & getline (istream &is, string &str);
/* ************************************************************************* */
/* Class definition */
/* ************************************************************************* */
class string {
public:
typedef char *iterator;
typedef const char *const_iterator;
static const size_t npos;
#endif /* _STRING_ */
# ifndef _STRING_HPP
# define _STRING_HPP 1
# endif
# ifndef _STRING_
# define _STRING_ 1
# endif
|