Russian Qt Forum

Qt => Общие вопросы => Тема начата: Awejk от Январь 10, 2010, 12:01



Название: QString to std::string
Отправлено: Awejk от Январь 10, 2010, 12:01
Код:

std::vector<QString> mXmlFiles

void foo()
{
   ...
   QString file = mXmlFiles[ui->reportTypeComboBox->currentIndex()];
   std::string str = "db/class/" + file.toStdString(); // 4 строка
   QString outFile = "out/reports/report_" + ui->reportTypeComboBox->currentText();
   QDateTime dt = QDateTime::currentDateTime();
   outFile.append(dt.toString("_yyyy.MM.dd_hh:mm:ss") + ".html");
   std::string str2 = "temp/" + outFile.toStdString(); // 8 строка
   ...
}

почему на 4-ой строке я могу так сделать, а на 8 строке не могу. Ошибка (http://ncesoftware.com/screenshots/Screenshot_1262.png).


Название: Re: QString to std::string
Отправлено: Dendy от Январь 10, 2010, 12:12
Скриншот ничего не говорит о том, что ошибка именно в 8-й строке. Это может быть всего-лишь симптом к ошибке в другом месте. Отладчик спасёт отца русской демократии.


Название: Re: QString to std::string
Отправлено: Awejk от Январь 10, 2010, 12:20
Забыл сказать что если закомментировать эту строку тогда всё работает правильно. Да и дебаг валится на этой строке.
Порылся по форумам, и нашёл следующее, что всё таки правильно надо было так
std::string str = "df" + std::string(outFile.toAscii().constData());

только не понятно, почему не работало со случаем .toStdString() и почему на 4 строке прошло без ошибок.


Название: Re: QString to std::string
Отправлено: Dendy от Январь 10, 2010, 12:24
Чем гадать лучше просто зайти отладчиком и посмотреть где оно падает. Или в момент появления этого окна (которое на скриншоте) подключиться отладчиком к уже работающей программе и посмотреть список вызовов.


Название: Re: QString to std::string
Отправлено: Awejk от Январь 10, 2010, 12:27
>и посмотреть список вызовов

это всмысле StackTrace? Потому что основываясь на стэктрейсе ошибка в этом месте.


Название: Re: QString to std::string
Отправлено: Dendy от Январь 10, 2010, 13:14
Код с виду нормальный, крешится не должно. Я бы на вашем месте подебажил внутрь самой Qt. По всей видимости стек вызовов уходит глубже это строчки.


Название: Re: QString to std::string
Отправлено: Awejk от Январь 10, 2010, 14:37
Понял, спасибо!