c++ minicsv庫的編譯錯誤與解決方案
有一個項目需要寫csv文件以呈現(xiàn)數(shù)據(jù)。Github上有一個關(guān)于csv的輕量級讀寫庫minicsv,于是下載之。但是編譯example時出現(xiàn)了以下問題:
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)
...
錯誤很多,不再貼出,占用篇幅。這些錯誤都來自于同一個函數(shù)頭。這個函數(shù)頭是這樣定義的:
void escape_and_output(std::string & src)
而調(diào)用時是這個樣子:
ostm.escape_and_output(os_temp.str());
很明顯,調(diào)用時的函數(shù)頭所要求的是右值引用,而真正的函數(shù)頭給出的左值引用,兩者不符,于是編譯器報錯。修改很簡單,“&”改為“&”即可,即把函數(shù)頭改成這個樣子:
void escape_and_output(std::string & src)
錯誤很水,本來也不想寫出來,但是又怕對c++0x不熟悉的人會不知所措,故貼之。還有我不知道為何項目中會留下這么個顯而易見的錯誤——或許那個老大的編譯器太智能了吧。
相關(guān)文章
C語言用fun函數(shù)實現(xiàn)兩個數(shù)的交換方式
這篇文章主要介紹了C語言用fun函數(shù)實現(xiàn)兩個數(shù)的交換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12在C++17中實現(xiàn)無鎖數(shù)據(jù)結(jié)構(gòu)的方法詳解
在探索?C++17?中的無鎖數(shù)據(jù)結(jié)構(gòu)之前,我們首先需要理解無鎖編程的基本概念及其在現(xiàn)代軟件開發(fā)中的重要性,在這個章節(jié)中,我們將深入探討無鎖編程的概念,以及它如何滿足人類對于更高效、更可靠軟件的本能需求,文中通過代碼示例介紹的非常詳細(xì),感興趣的朋友可以參考下2023-12-12