Root/
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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | < html > <!-- #BeginTemplate "/Templates/tmpl.dwt" --> <!-- DW6 --> < head > <!-- #BeginEditable "doctitle" --> < title >PTypes: string: manipulation</ title > <!-- #EndEditable --> < meta http-equiv = "Content-Type" content = "text/html; charset=iso-8859-1" > < link rel = "stylesheet" href = "styles.css" > </ head > < body bgcolor = "#FFFFFF" leftmargin = "40" marginwidth = "40" > < p >< a href = "../index.html" >< img src = "title-21.png" width = "253" height = "39" alt = "C++ Portable Types Library (PTypes) Version 2.1" border = "0" ></ a > < hr size = "1" noshade> <!-- #BeginEditable "body" --> < p class = "hpath" >< a href = "index.html" >Top</ a >: < a href = "basic.html" >Basic types</ a >: < a href = "string.html" >string</ a >: Manipulation</ p > < blockquote > < pre class = "lang" >#include < ptypes.h > < span class = "comment" >// get/set length and misc.</ span > int length(const string& s); char* setlength(string&, int); char* unique(string&); void clear(string& s); bool isempty(const string& s); < span class = "comment" >// concatenate</ span > void concat(string& s, const char* sc, int catlen); < span class = "comment" >// copy (get substring by position and length)</ span > string copy(const string& s, int from [, int cnt ] ); < span class = "comment" >// insert string or character</ span > void ins(const char* s1, string& s, int at); void ins(char s1, string& s, int at); void ins(const string& s1, string& s, int at); void ins(const char* s1, int s1len, string& s, int at); < span class = "comment" >// delete substring</ span > void del(string& s, int at [, int cnt ] ); < span class = "comment" >// find substring or character</ span > int pos(const char* s1, const string& s); int pos(char s1, const string& s); int pos(const string& s1, const string& s); int rpos(char s1, const string& s); < span class = "comment" >// compare substring</ span > bool contains(const char* s1, const string& s, int at); bool contains(char s1, const string& s, int at); bool contains(const string& s1, const string& s, int at); bool contains(const char* s1, int s1len, const string& s, int at); </ pre > </ blockquote > < p >< span class = "def" >int length(const string& s)</ span > returns the actual length of the string, not counting the terminating null-symbol.</ p > < p >< span class = "def" >char* setlength(string&, int)</ span > changes the actual length of the string. The content of the original string is preserved, however the content of extra characters added during reallocation is undefined. This function returns a pointer to a unique buffer (i.e. refcount is 1), like function < span class = "lang" >unique()</ span > below. Even if the length of the string is not changing, < span class = "lang" >setlength()</ span > guarantees to make the string unique.</ p > < p >< span class = "def" >char* unique(string&)</ span > makes the string buffer unique, i.e. a new buffer is allocated and data is copied if necessary, so that the reference count after calling this function is guaranteed to be 1. All string manipulation functions call < span class = "lang" >unique()</ span > whenever a modification is made on the string buffer. You may need to call this function explicitly to obtain a character pointer to the buffer; in all other cases reference counting mechanism works transparently.</ p > < p >< span class = "def" >bool isempty(string&)</ span > returns true if the given string is empty. Using this function is preferable to comparing the string with empty string literal "".</ p > < p >< span class = "def" >clear(string&)</ span > makes the given string empty. Using this function is preferable to assigning an empty string literal "".</ p > < p >< span class = "def" >concat(string& s, const char* sc, int catlen)</ span > adds the given buffer < span class = "lang" >sc</ span > of length < span class = "lang" >catlen</ span > to the string object < span class = "lang" >s</ span >. Use operators + and += instead to concatenate characters, null-terminated strings and string objects.</ p > < p >< span class = "def" >string copy(const string& s, int from [, int cnt ] )</ span > returns a substring of < span class = "lang" >s</ span > starting from position < span class = "lang" >from</ span > and containing < span class = "lang" >cnt</ span > characters. If < span class = "lang" >cnt</ span > is omitted, the rest of the string < span class = "lang" >s</ span > starting from position < span class = "lang" >from</ span > is returned.</ p > < p >< span class = "def" >ins(..., string& s, int at)</ span > inserts a character, a null-terminated string, a string object or a buffer with specified length into string object < span class = "lang" >s</ span > at the given position < span class = "lang" >at</ span >. If the position is out of bounds, < span class = "lang" >ins()</ span > does nothing.</ p > < p >< span class = "def" >del(string& s, int at [, int cnt ] )</ span > deletes < span class = "lang" >cnt</ span > characters starting from position < span class = "lang" >at</ span > of the string < span class = "lang" >s</ span >. If < span class = "lang" >cnt</ span > is omitted, the rest of the string starting from < span class = "lang" >at</ span > is deleted.</ p > < p >< span class = "def" >int pos(..., const string& s)</ span > returns the position of the first occurrence of a character, a null-terminated string or a string object (first parameter) in the source string < span class = "lang" >s</ span >, or returns -1 if the substring is not found. Function < span class = "lang" >rpos()</ span > performs reverse-search.</ p > < p >< span class = "def" >bool contains(..., const string& s, int at)</ span > returns true if the given character, null-terminated string or string object (first parameter) equals the substring of < span class = "lang" >s</ span > at the given position < span class = "lang" >at</ span >.</ p > < p class = "seealso" >See also: < a href = "string.constructors.html" >Constructors/destructors</ a >, < a href = "string.operators.html" >Operators</ a >, < a href = "string.typecasts.html" >Typecasts</ a >, < a href = "string.conversion.html" >Conversion</ a ></ p > <!-- #EndEditable --> < hr size = "1" > < a href = "../index.html" class = "ns" >PTypes home</ a > </ body > <!-- #EndTemplate --> </ html > |
Source at commit 209d6fa3805c created 11 years 11 months ago. By Nathan Adams, Updating tparray to use variants as array because tpodlist was causing variant data corruption |
---|