[Rcpp-devel] Understanding the behaviour of const CharacterVector as a function parameter
Simon Zehnder
szehnder at uni-bonn.de
Sun Sep 29 14:06:00 CEST 2013
Dear Rcpp::Users and Rcpp::Devels,
I would like to understand a certain behaviour of my code I encountered lately.
I am working with CharacterVector and the following behaviour occurred:
void test1 (Rcpp::CharacterVector &charv)
{
Rprintf("test1: %s\n", (char*) charv(0));
}
void test2 (const Rcpp::CharacterVector &str)
{
Rprintf("test2: %s\n", (char*) charv(0));
}
Using a string like "2013-05-04 20:23:21" for the Rcpp::CharacterVector gives the following outputs:
test1: 2013-05-04 20:23:21
test2: `
This does also not change if I use a cast to const char* in test2. I tried something similar with strings and printing the c_str() of them, there the 'const' keyword does not make a difference - it always prints the correct string.
Is this something specific to the Rcpp::CharacterVector, that uses a string_proxy for its elements returned by the operator ()? Is there a way to use const Rcpp::CharacterVector and get the behaviour of test1?
Best
Simon
More information about the Rcpp-devel
mailing list