[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