所以,我想通过某种流解析文件,我确实可以简单地使用ifstream类,但问题是我的目标是性能和所有那些>> ifstream类的运算符可能真的会减慢我的程序。 所以我想出了以某种方式将整个文件读入std :: stringstream,然后使用stringstream解析文件的想法。 我想做这样的事情,但我无法让它发挥作用:
std::ifstream fin( p_Filename.c_str( ) );
fin.seekg( 0, std::ifstream::end );
int fileSize = static_cast<int>( fin.tellg( ) );
fin.seekg( 0, std::ifstream::beg );
std::stringstream ss;
ss.str( ).resize( fileSize );
fin.read( const_cast<char*>( ss.str( ).c_str( ) ), fileSize );
答案 0 :(得分:1)
char
数组来保存内容。char
将整个文件读入istream::read
数组。istringstream
数组的char
。用它来解析数据。char
。<强>更新强>
如果要遵循此策略,请确保以二进制模式打开文件。谢谢@ooga。
答案 1 :(得分:0)
您的结论无效。
如果>>
运算符将成为开销,它们将对字符串进行相同的开销操作,并且在处理任何文件之前读取整个文件只会增加延迟,即浪费时间和空间。
您不需要这样做。确保fstream.