我想知道是否有Rcpp
办法将元素或迭代器转换为const CharacterVector&
to 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) );
但是,在我的情况下,我不想创建一个时间长的字符串向量。
谢谢回答。