練習のために、QTライブラリを使用して、フォルダーを選択し、そのフォルダー内のdicomファイルの名前をリストしようとしています。そのためのコードは次のとおりです。
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QString fileName = QFileDialog::getExistingDirectory();
if (fileName.isEmpty())
{
std::cout << "Got an empty file!\n";
}
else
{
QStringList nameFilter;
QDir dir(fileName);
nameFilter << "*.dcm";
QFileInfoList list = dir.entryInfoList( nameFilter, QDir::Files );
int numberOfFiles=list.count();
for(int i=0;i<numberOfFiles;i++)
{
QString filena=list[i].fileName();
string a=filena.toStdString();
cout<<a<<endl;
}
}
return 0;
}
toStdString
ここで、実際std::string QString::toStdString () const
には である関数 が Heap エラーを与えることがわかりました。このエラーを取り除く代わりに を使用することはわかっていtoLocal8Bit().constData()
ますが、toStdString によって提供されるヒープ エラーの背後にある主な理由は何なのか知りたいです。それはconst
型であり、for ループが毎回 const 変数を上書きしようとしているからですか?