Здравствуйте, гость ( Вход | Регистрация )
posi4 | Дата 29.7.2009, 14:40 |
Спасибо за совет, разобрался! | |
den'ka | Дата 29.7.2009, 13:29 |
Цитата Как это нет, все есть. QDataStream & operator<< ( QDataStream & stream, const QString & string )ж Смотрю описание класса, но в упор не вижу этой перегрузки! Объясните? См описание QString а именно Related Non-Members Данный оператор реализован не как член ф-ция класса QDataStream |
|
posi4 | Дата 29.7.2009, 13:08 |
Цитата Как это нет, все есть. QDataStream & operator<< ( QDataStream & stream, const QString & string )ж Смотрю описание класса, но в упор не вижу этой перегрузки! Объясните? |
|
BRE | Дата 29.7.2009, 12:43 |
Увидел название темы и решил задать вопрос про char и QString. Как загнать элемент QString в QDataStream через оператор <<? Вариантов перегрузки у него куча, но для QString'а нету. Напрашивается вариант перегрузить его вручную. Может есть уже написанные варианты или вообще другой способ? Как это нет, все есть. QDataStream & operator<< ( QDataStream & stream, const QString & string )ж |
|
posi4 | Дата 29.7.2009, 12:40 |
Увидел название темы и решил задать вопрос про char и QString. Как загнать элемент QString в QDataStream через оператор <<? Вариантов перегрузки у него куча, но для QString'а нету. Напрашивается вариант перегрузить его вручную. Может есть уже написанные варианты или вообще другой способ? |
|
whyt | Дата 30.3.2009, 16:16 |
igor_bogomolov, угу=) сутки CODE void MainWindow::Minuts(const QString sIn) { int iRez; QString sStr,sDate; bool bEndDigit; iRez=0; sStr="";bEndDigit=false;sDate=sIn; while (sDate.size()>0) { QChar::QChar(cM)=sDate.at(0); //конвертируем первый символ в QChar if (cM>=48 && cM<=57) //проверяем, число это или букво { if (bEndDigit==true) { sStr=""; } sStr=sStr+sDate.mid(0,1); bEndDigit=false; } else { bEndDigit=true; } if (cM==1095 || cM==1063) // если 'Ч' или 'ч' { bool ok; iRez=iRez + sStr.toInt(&ok,10)*60; sStr=""; } if (cM==1057 || cM==1089) // если 'C' или 'c' { bool ok; iRez=iRez + sStr.toInt(&ok,10)*60*24;sStr=""; } if (cM==1052 || cM==1084) // если 'М' или 'м' { bool ok; iRez=iRez + sStr.toInt(&ok,10);sStr=""; } sDate=sDate.mid(1,sDate.size()-1); // выкидываем первый слева символ } } ЗЫ. вот так, единственное что хотелось, так реализовать без if - else, а с помощью switch. Выше в теме описано почему неполучилось) |
|
igor_bogomolov | Дата 30.3.2009, 15:42 |
Так С - это сутки . Почему бы и не выложить. Я считаю что конечный результат всегда нужно выкладывать |
|
whyt | Дата 30.3.2009, 15:34 |
спасибо за помощь, решение уже есть. molchanoviv, спасибо за вариант,интересно, но немного не то,что мне нужно. igor_bogomolov, уточнив задачу я понял что всего может быть три вариации букв - 'C' - сутки, 'Ч' - часы,'М' - минуты..а там обрабатываю через if - else и коды символов. если кому - то интересно могу выложить на языке. =) |
|
igor_bogomolov | Дата 30.3.2009, 11:09 |
я не знаю какого типа моя запись 10м, 10ч15м, или 15ч Если QString str = "12м23с"; то на выходе получим 12, 23. Встает вопрос: как определить что такое 12 - часы или минуты? Основная задача была перевести подобную строку в минуты. А формат строки может меняться. |
|
molchanoviv | Дата 30.3.2009, 10:50 |
Если еще актуально, то вот мой вариант решения проблемы
На выходе мы получим список состоящий из трех элементов: 6, 12, 23 |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 10.5.2024, 14:26 |