Объявление StringStream в проблеме QT - PullRequest
0 голосов
/ 11 апреля 2011

У меня проблема с объявлением StringStream в QT.Вот мой код:

 std::stringstream ss;
                 for (int i = 0; i <= path.length()-1; ++i)
                 {
                    if (path[i] == '\\')
                    {
                        ss << "\\\\";
                    }
                    else
                    {
                    ss << path[i];
                    }
                 }
                    path = QString::fromStdString(ss.str());//store the stringstream to a string
         return path;

сообщение об ошибке:

aggregate 'std::stringstream ss' has incomplete type and cannot be defined;

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Смешивание QString и std::string или связанные с ними, как правило, не очень хорошая идея. Вы должны реализовать это с помощью QString методов, таких как replace( QChar ch, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive).

path.replace('\\', "\\\\");

Кстати, вы не можете напрямую использовать QString ни с одним из стандартных потоков std, перегрузки не определены. Хотя функция qPrintable может помочь. И вам нужно включить <sstream>, чтобы использовать std::stringstream.

1 голос
/ 11 апреля 2011

Включите <sstream> для использования класса stringstream.

Хотя я согласен с @Mat, что было бы неплохо использовать методы Qtring Qtring для этой конкретной цели.

...