Chapter 15 String
String is a scalar type corresponding to the element of CharacterVector. String can also handle NA values (NA_STRING) which are not supported by the C character string char* and the C++ string std::string.
15.1 Creating String object
There are roughly three ways to create a String object, as follows. The first method is to create from a C/C++ string, the second is to create it from another String object, and the third is to create it from one element of a CharacterVector.
15.2 Operators
The += operator is defined in String type. This allows you to combine another string object at the end of the string. (Note that the + operator is not defined)
// Creating String object
String s("A");
// Conbining a string
s += "B";
Rcout << s << "\n"; // "AB"
15.3 Member functions
Note: The member functions replace_first(), replace_last(), replace_all() do not just return the replaced character string, but instead rewrite the value of this object.
15.3.1 replace_first( str, new_str )
Replace first substring that matches the string str with the string new_str.
15.3.2 replace_last( str, new_str )
Replace last substring that matches the string str with the string new_str.
15.3.3 replace_all( str, new_str )
Replace all substrings that matches the string str with the string new_str.
15.3.4 push_back(str)
Combine the string str to the end of this String object. (Same as += operator)
15.3.5 push_front(str)
Combine the string str at the beginning of this String object.
15.3.6 set_na()
Set NA value to this String object.
15.3.7 get_cstring()
Convert the string of this String object into a C character string constant (const char*) and return it.
15.3.8 get_encoding()
Returns the character encoding. The encoding is represented by cetype_t.
15.3.9 set_encoding(enc)
Set the character encoding specified by cetype_t.
15.3.10 Code example
// [[Rcpp::export]]
void rcpp_replace(){
// Replace only at the first occurrence of "ab"
String s("abcdabcd");
s.replace_first("ab", "AB");
Rcout << s.get_cstring() << "\n"; // ABcdabcd
// Replace only at the last occurrence of "ab"
s="abcdabcd";
s.replace_last("ab", "AB");
Rcout << s.get_cstring() << "\n"; // abcdABcd
// Replace every occurrence of "ab"
s="abcdabcd";
s.replace_all("ab", "AB");
Rcout << s.get_cstring() << "\n"; // ABcdABcd
}