Russian Qt Forum
Сентябрь 29, 2024, 18:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QString to std::string  (Прочитано 5246 раз)
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 строке не могу. Ошибка.
Записан
Dendy
Гость
« Ответ #1 : Январь 10, 2010, 12:12 »

Скриншот ничего не говорит о том, что ошибка именно в 8-й строке. Это может быть всего-лишь симптом к ошибке в другом месте. Отладчик спасёт отца русской демократии.
Записан
Awejk
Гость
« Ответ #2 : Январь 10, 2010, 12:20 »

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

только не понятно, почему не работало со случаем .toStdString() и почему на 4 строке прошло без ошибок.
« Последнее редактирование: Январь 10, 2010, 12:22 от Awejk » Записан
Dendy
Гость
« Ответ #3 : Январь 10, 2010, 12:24 »

Чем гадать лучше просто зайти отладчиком и посмотреть где оно падает. Или в момент появления этого окна (которое на скриншоте) подключиться отладчиком к уже работающей программе и посмотреть список вызовов.
Записан
Awejk
Гость
« Ответ #4 : Январь 10, 2010, 12:27 »

>и посмотреть список вызовов

это всмысле StackTrace? Потому что основываясь на стэктрейсе ошибка в этом месте.
« Последнее редактирование: Январь 10, 2010, 12:28 от Awejk » Записан
Dendy
Гость
« Ответ #5 : Январь 10, 2010, 13:14 »

Код с виду нормальный, крешится не должно. Я бы на вашем месте подебажил внутрь самой Qt. По всей видимости стек вызовов уходит глубже это строчки.
Записан
Awejk
Гость
« Ответ #6 : Январь 10, 2010, 14:37 »

Понял, спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 20.