Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
Trisch |
31.12.2013, 5:16
Сообщение
#1
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0
|
У меня fstream::open() не может открыть файлы в пути которых кириллица. Это можно как то исправить?
|
|
|
|
|
Iron Bug |
31.12.2013, 6:27
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
а как ты их ему скармливаешь? переведи в юникод. детально можно почитать тут: Link
|
|
|
|
|
Trisch |
31.12.2013, 7:43
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0
|
Ну примерно вот так:
|
|
|
|
|
Litkevich Yuriy |
31.12.2013, 20:14
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Trisch @ 31.12.2013, 9:43) Link const wchar_t* filename = QString::toStdWString().data(); прокомментируй эту строку |
|
|
|
|
Trisch |
2.1.2014, 3:16
Сообщение
#5
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 31.12.2013, 21:14) Link Цитата(Trisch @ 31.12.2013, 9:43) Link const wchar_t* filename = QString::toStdWString().data(); прокомментируй эту строкуну сначала преобразуем QString в std::wstring, а потом в wchar_t*. |
|
|
|
|
Trisch |
3.1.2014, 11:40
Сообщение
#6
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0
|
В общем под Linux я решил проблему избавившись от посредников и напрямую загнал QString::toStdString().data() в fstream::open(). Под Windows по прежнему файлы не открываются.
Сообщение отредактировал Trisch - 3.1.2014, 22:34 |
|
|
|
|
Litkevich Yuriy |
5.1.2014, 11:07
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(Trisch @ 2.1.2014, 5:16) Link сначала преобразуем QString какой QString? у тебя нет такого объекта. Метод toStdWString() - не статический, он требует объект. |
|
|
|
|
Trisch |
5.1.2014, 11:58
Сообщение
#8
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 379 Регистрация: 30.1.2012 Из: Запорожье Пользователь №: 3169 Спасибо сказали: 24 раз(а) Репутация: 0
|
Цитата(Litkevich Yuriy @ 5.1.2014, 12:07) Link Цитата(Trisch @ 2.1.2014, 5:16) Link сначала преобразуем QString какой QString? у тебя нет такого объекта. Метод toStdWString() - не статический, он требует объект.А если так? ну это сейчас не важно. Сейчас я делаю, примерно, так: Под Linux все работает. А вот под windows не хочет работать |
|
|
|
|
Litkevich Yuriy |
5.1.2014, 12:17
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Я б просто попробовал по разному получать имя файла:
str.toLocal8Bit().data () str.toStdString().data () str.toUtf8().data () (названия методов по памяти) |
|
|
|
|
AD |
5.1.2014, 20:54
Сообщение
#10
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17
|
Цитата(Trisch @ 5.1.2014, 12:58) Link Под Linux все работает. А вот под windows не хочет работать У меня была подобная проблема. Попробуй в две строки:
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 12:39 |