2013-11-02 54 views
0

我使用的是一些相當簡單的C++代碼來發出聲音文件的內容爲std::string錯誤:無法在簡單的std :: string文件slurper轉換

// Read contents of file given to a std::string. 
std::string f = "main.js"; 
std::ifstream ifs(f.c_str()); 
std::stringstream sstr; 
sstr << ifs.rdbuf(); 
std::string code = sstr.str(); 

但是,當我編譯,我得到這個錯誤:

error: could not convert ‘((*(const std::allocator<char>*)(& std::allocator<char>())), 
(operator new(4u), (<statement>, ((std::string*)<anonymous>))))’ from ‘std::string* 
{aka std::basic_string<char>*}’ to ‘std::string {aka std::basic_string<char>}’ 

我知道這可能是一個簡單的錯誤,但我仍然非常學習C++。應該只是一個簡單的類型混合或什麼的。

根據要求,這裏是我想要做的一些示例代碼:

std::string Slurp(std::string f) 
{ 
    std::ifstream ifs(f.c_str()); 
    std::stringstream sstr; 
    sstr << ifs.rdbuf(); 
    std::string code = sstr.str(); 
    return code; 
} 

感謝。

回答

2

除非要動態分配,否則不要在C++中使用new創建對象。 new返回一個指針。這應該工作。

std::string f("main.js"); 
std::ifstream ifs(f.c_str()); 

std::ifstream構造函數需要一個const char *,所以你需要使用std::string::c_str()

+0

'F'實際上代表了'的std :: string'這是一個參數傳遞給我的啜食代碼的功能。我仍然用'c_str()'得到錯誤。 – beakr

+0

您是否仍然收到您發佈的相同錯誤? – Kunal

+0

是的,發佈確切的錯誤。 – beakr

相關問題