簡體   English   中英

Ifstream 返回空字符串

[英]Ifstream returns empty string

該文件不為空,但ifstream返回一個空字符串。

這是我嘗試過的:

std::ifstream ifs;
ifs.open("joke");
ifs >> ymjoke.c_str();
ShowMessage(ymjoke);

這是ShowMessage() window 的屏幕截圖:

圖片

我假設ymjoke被聲明為AnsiString ,是嗎? 你為什么要讀入它的c_str()指針? 你有沒有預先分配ymjoke的 memory ? 我打賭你沒有。 您正在使用讀入char[]緩沖區的重載operator>> ,因此它希望緩沖區足夠大以容納正在讀入的文本,例如:

AnsiString ymjoke;
ymjoke.SetLength(256); // or whatever size suits your need
std::ifstream ifs("joke");
ifs >> std::setw(ymjoke.Length()+1) >> ymjoke.c_str();
ShowMessage(ymjoke.c_str());

也就是說,VCL 有一個重載的operator>>用於從std::istream讀取AnsiString 您只需手動啟用它,方法是將VCL_IOSTREAM添加到項目選項中的 Conditionals 列表中。 然后,您可以像這樣使用它:

AnsiString ymjoke;
std::ifstream ifs("joke");
ifs >> ymjoke;
ShowMessage(ymjoke);

否則,改為讀入std::string ,例如:

std::string ymjoke;
std::ifstream ifs("joke");
ifs >> ymjoke;
ShowMessage(ymjoke.c_str());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM