我對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