【发布时间】:2016-08-15 08:39:08
【问题描述】:
我真的是 C++ 新手,我对 C++ 中的指针、地址和函数调用有点困惑。
我有以下函数调用:
config.pages= avail_pages(config.books_path, &config.books.front());
配置类有多个std::vectors<uint16_t>,例如config.books 保存书籍 ID(即来自 books_path 的文件名)。
现在我想获取第一本书的可用页面(每一页都是一个文件)。因此,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;
}
问题是:如果我使用向量函数front(),它会返回对第一个元素的引用。
我可以这样称呼它:
&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 感谢您不断参考的提示!
标签: c++ pointers boost reference