c++ minicsv庫的編譯錯誤與解決方案

來源:互聯網
上載者:User
有一個項目需要寫csv檔案以呈現資料。Github上有一個關於csv的輕量級讀寫庫minicsv,於是下載之。但是編譯example時出現了以下問題:

In file included from example.cpp:1:0:
minicsv.hpp: In function 'csv::ofstream& operator<<(csv::ofstream&, const T&)':
minicsv.hpp:326:38: error: no matching function for call to 'csv::ofstream::escape_and_output(std::basic_ostringstream<char>::__string_type)'
ostm.escape_and_output(os_temp.str());
^
minicsv.hpp:326:38: note: candidate is:
minicsv.hpp:266:8: note: void csv::ofstream::escape_and_output(std::string&)
void escape_and_output(std::string & src)

...

  錯誤很多,不再貼出,佔用篇幅。這些錯誤都來自於同一個函數頭。這個函數頭是這樣定義的:

    void escape_and_output(std::string & src)

  而調用時是這個樣子:

    ostm.escape_and_output(os_temp.str());

  很明顯,調用時的函數頭所要求的是右值引用,而真正的函數頭給出的左值引用,兩者不符,於是編譯器報錯。修改很簡單,“&”改為“&”即可,即把函數頭改成這個樣子:
    void escape_and_output(std::string & src)
  錯誤很水,本來也不想寫出來,但是又怕對c++0x不熟悉的人會不知所措,故貼之。還有我不知道為何項目中會留下這麼個顯而易見的錯誤——或許那個老大的編譯器太智能了吧。

更多相關文章請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.