Название: Проблемы с функциями WinAPI Отправлено: IUnknown от Февраль 07, 2007, 23:42 Хочу получить имя файла без разширения и для этого хочу использовать функцию из бибилиотеки shlwapi PathRemoveExtension.
Делаю так: { QString m_fileName = "c:\\windows\\readme.txt"; LPTSTR str = (LPTSTR)m_fileName.toStdWString().c_str(); ::PathRemoveExtension(str); return QString::fromStdWString(str); } В результате получаю строку с крякозябликами. Использую VS2005, Qt 4.2.2 из qt.tttxp.ru. В чем проблема? Заранее благодарен за помощь? Название: Проблемы с функциями WinAPI Отправлено: Вячеслав от Февраль 07, 2007, 23:56 Вопрос в лоб - а на кой stl прикручивать ? чем toLocal8Bit или toAscii не устраивает ? Собственно тот объект из которого ты получаешь буфер будет удален после выполнения метода c_str() - собственно указатеь висит в воздухе ... Копируй строку во времянку .. должно полегчать ;)
Название: Проблемы с функциями WinAPI Отправлено: IUnknown от Февраль 08, 2007, 00:57 QString tmp = path;
LPTSTR str = (LPTSTR)tmp.toStdWString().c_str(); ::PathAddBackslash(str); return QString::fromStdWString(str); Получаю аналогичный результат, а stl для того что не знаю как из QByteArray в LPWSTR перейти. Очень бы хотелось примерчик кода с комментариями. Заранее благодарен. добавлено спустя 7 минут: Странно, а в MinGW этот пример вроде бы без проблем прошел?! Но мне нужно его сделать в VS2005. Название: Re: Проблемы с функциями WinAPI Отправлено: Tonal от Февраль 08, 2007, 11:09 Результат функций .toStdWString() и .c_str() гарантированно живёт до окончания вычисления полного выражения, в котором они использованы.
Дальше с ним (результатом) может произойти всё что угодно. Короче, если используешь такие функции, надо скопировать куда-то результат, или сразу передать. А чем тебе QFileInfo не подходит? |