[英]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.