の要素またはイテレータをにRcpp
変換する方法があるかどうか疑問に思っています。次のコードを試してみるとconst CharacterVector&
std::string
void as(const CharacterVector& src) {
std::string glue;
for(int i = 0;i < src.size();i++) {
glue.assign(src[i]);
}
}
コンパイル時エラーが発生します:
no known conversion for argument 1 from ‘const type {aka SEXPREC* const}’ to ‘const char*’
これまでのところ、C API を使用して変換を行います。
glue.assign(CHAR(STRING_ELT(src.asSexp(), i)));
私の Rcpp バージョンは 0.10.2 です。
ちなみに、 があることは知っていRcpp::as
ます。
glue.assign(Rcpp::as<std::string>(src[i]));
上記のコードは実行時エラーを生成します:
Error: expecting a string
一方、次のコードは正しく実行されます。
typedef std::vector< std::string > StrVec;
StrVec glue( Rcpp::as<StrVec>(src) );
ただし、私の場合、文字列の一時的な長いベクトルを作成したくありません。
回答ありがとうございます。