Tôi đang cố mở một tệp trong hàm Rcpp, vì vậy tôi cần tên tệp là chuỗi char * hoặc std ::.chuyển đổi Rcpp :: CharacterVector thành std :: string
Cho đến nay, tôi đã thử như sau:
#include <Rcpp.h>
#include <boost/algorithm/string.hpp>
#include <fstream>
#include <string>
RcppExport SEXP readData(SEXP f1) {
Rcpp::CharacterVector ff(f1);
std::string fname = Rcpp::as(ff);
std::ifstream fi;
fi.open(fname.c_str(),std::ios::in);
std::string line;
fi >> line;
Rcpp::CharacterVector rline = Rcpp::wrap(line);
return rline;
}
Nhưng dường như, as
không làm việc cho Rcpp::CharacterVector
khi tôi nhận được một lỗi thời gian biên dịch.
foo.cpp: In function 'SEXPREC* readData(SEXPREC*)':
foo.cpp:8: error: no matching function for call to 'as(Rcpp::CharacterVector&)'
make: *** [foo.o] Error 1
Có cách nào đơn giản để lấy chuỗi từ đối số hoặc bằng cách nào đó mở tệp từ đối số hàm Rcpp không?
không Rcpp :: làm (ff) hoạt động? –
@IanFellows, yup, hoạt động! – highBandWidth