c++ minicsv庫的編譯錯(cuò)誤與解決方案
有一個(gè)項(xiàng)目需要寫csv文件以呈現(xiàn)數(shù)據(jù)。Github上有一個(gè)關(guān)于csv的輕量級(jí)讀寫庫minicsv,于是下載之。但是編譯example時(shí)出現(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)
...
錯(cuò)誤很多,不再貼出,占用篇幅。這些錯(cuò)誤都來自于同一個(gè)函數(shù)頭。這個(gè)函數(shù)頭是這樣定義的:
void escape_and_output(std::string & src)
而調(diào)用時(shí)是這個(gè)樣子:
ostm.escape_and_output(os_temp.str());
很明顯,調(diào)用時(shí)的函數(shù)頭所要求的是右值引用,而真正的函數(shù)頭給出的左值引用,兩者不符,于是編譯器報(bào)錯(cuò)。修改很簡(jiǎn)單,“&”改為“&”即可,即把函數(shù)頭改成這個(gè)樣子:
void escape_and_output(std::string & src)
錯(cuò)誤很水,本來也不想寫出來,但是又怕對(duì)c++0x不熟悉的人會(huì)不知所措,故貼之。還有我不知道為何項(xiàng)目中會(huì)留下這么個(gè)顯而易見的錯(cuò)誤——或許那個(gè)老大的編譯器太智能了吧。
相關(guān)文章
C++ string和wstring相互轉(zhuǎn)換方式
這篇文章主要介紹了C++ string和wstring相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
C語言實(shí)現(xiàn)從文件讀入一個(gè)3*3數(shù)組,并計(jì)算每行的平均值
今天小編就為大家分享一篇C語言實(shí)現(xiàn)從文件讀入一個(gè)3*3數(shù)組,并計(jì)算每行的平均值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
解析wprintf 中使用%I64d格式化輸出LONGLONG的詳細(xì)介紹
本篇文章是對(duì)wprintf 中使用%I64d格式化輸出LONGLONG進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
Linux下g++編譯與使用靜態(tài)庫和動(dòng)態(tài)庫的方法
下面小編就為大家?guī)硪黄狶inux下g++編譯與使用靜態(tài)庫和動(dòng)態(tài)庫的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
C++ struct 初始化與賦值的實(shí)現(xiàn)
在C++中初始化和賦值語句是兩種不同的語法結(jié)構(gòu),本文主要介紹了C++ struct 初始化與賦值的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03

