繁体   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