[英]Ifstream returns empty string
我假設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.