我对C++真的很陌生,我对C++中的指针,地址和函数调用有点困惑。C++指针,引用和函数调用
我有以下函数调用:
config.pages= avail_pages(config.books_path, &config.books.front());
的配置类具有多个std::vectors<uint16_t>
,例如config.books
保存书籍ID(这是书籍路径中的文件名称)。
现在我想获得第一本书的可用页面(每页是一个文件)。因此,avail_pages应查找books_path中的文件和第一本书中的文件。
的有效路径可以预订1234和12页看起来像这样:books_path/1234/12
std::vector<uint16_t> avail_pages(std::string books_path, uint16_t* book) {
std::vector<uint16_t> pages;
std::string first_book;
first_book = books_path + std::to_string(*book); //pointer or not? string concatenation?
boost::filesystem::path p(first_book);
for (auto i = boost::filesystem::directory_iterator(p); i != boost::filesystem::directory_iterator(); i++)
{
std::string s = i->path().filename().string();
pages.push_back(std::stoi(s));
}
return pages;
}
的问题是:如果我使用矢量函数前()返回到所述第一元件的参考。
我这样称呼:
&config.books.front()
?如何将引用传递给函数?我必须使用像这样的指针:
std::vector<uint16_t> avail_pages(std::string books_path, uint16_t* book)
?- 如何访问实际值并将其从整数转换为 字符串?
目前,我在front()函数的函数调用中得到一个错误,它显示我没有理解参考/指针的东西。 在此先感谢!
它总是一些容器的一部分?我的意思是你想参考的价值。 –
为什么你将'book'参数作为指针传递?另外,不是按值传递'books_path'(意味着它被复制*),而是将其作为常量引用(即const std :: string&books_path)传递。 –
@JoachimPileborg感谢与恒定的参考提示! – cruxi