私はこれを使用しています:
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 を考えると安全ですか? つまり、私が istrinstream で作業している限り、内部バッファーは istringstream クラスによって書き込まれることはありません。そのため、line 変数が有効で変更されていない限り、ss 変数は有効な状態のままであるはずですよね?