我一直在使用这个:
ifstream in("file.txt")
string line;
getline(in,line);
istringstream iss(line);
...
为了进行一些简单的解析,我希望避免不必要的复制以提高性能,因此尝试了如下:
ifstream in("huge_line.txt");
string line;
getline(in,line);
istringstream ss;
ss.rdbuf()->pubsetbuf(const_cast<char*>(line.c_str()), line.size());
...
看起来它能够胜任任务(明显地提高了性能)。我的问题是,使用const_cast是否安全? 我的意思是,只要我使用istringstream,内部缓冲区就不应该被istringstream类写入,所以只要line变量有效且未修改,ss变量就应该保持在有效状态,对吗?
istringstream
没有一个从字符串移动的构造函数。 - M.M