我已經嘗試了以下代碼與正常的ifstreams和當前的boost:我使用的iostream,都有相同的結果。C++ c_str不返回整個字符串
它旨在從physfs加載文件到內存中,然後將其傳遞給處理程序來處理(例如圖像,音頻或數據)。目前,當調用c_str時,它只返回文件的一小部分。
PhysFS::FileStream file("Resources/test.png" , PhysFS::OM_READ);
if(file.is_open()) {
String* theFile;
theFile = new String((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
String::iterator it;
for (it=theFile->begin() ; it < theFile->end(); it++) {
std::cout << *it;
} // Outputs the entire file
std::cout << theFile->c_str(); // Outputs only the first few lines
}
該迭代循環輸出作爲預期整個PNG文件,但c_str調用僅返回前幾個字符(\ 211PNG)。
我一直在嘗試此代碼的變體很長時間沒有成功。有任何想法嗎?
我該如何解決這個問題?我對C風格字符串沒有太多經驗 – 2009-10-12 16:59:58
不要使用c_str() - 使用std :: string操作 – Mark 2009-10-12 17:07:04
我正在使用需要c字符串輸入的庫。 – 2009-10-12 17:09:37