Форум программистов, компьютерный форум CyberForum.ru

Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String - C++

Восстановить пароль Регистрация
 
 
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 1
29.10.2015, 00:27     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #1
Есть строка Glib::ustring, пытался её конвертировать в sf::String, и вроде бы всё работает без особых костылей, но как добрался до кириллицы, нифига ничего не работает.
Придумал такой костыль:
C++
1
2
3
4
5
6
7
sf::String convert_from_ustring (const Glib::ustring& source_string) 
{
    static std::wstringstream ss ;
    ss.clear() ;
    ss << source_string ;
    return sf::String(ss.str()) ;
}
У кого есть винда (под Linux'ами вроде пашет, но тоже лучше потестить) с соответствующими библиотеками (sfml и glibmm) просьба протестировать этот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <fstream>
#include <sstream>
#include <SFML/Graphics.hpp>
#include <glibmm.h>
 
 
namespace sfml_tools
{
    //TODO: multithread version
    sf::String convert_from_ustring (const Glib::ustring& source_string)
    {
        static std::wstringstream ss ;
        ss.clear() ;
        ss << source_string ;
        return sf::String(ss.str()) ;
    }
}
 
 
 
 
int main()
{
    using sfml_tools::convert_from_ustring ;
    //std::locale::global(std::locale("ru_RU.UTF-8"));
    std::ifstream file("input.txt") ; //Файл в кодировке utf-8 с русским текстом
    if ( !file.is_open() )
        return -1 ;
 
    std::string line ;
    std::getline ( file , line ) ;
 
    Glib::ustring u_str(line);
    sf::String s( convert_from_ustring(u_str) ) ;
 
    sf::RenderWindow wnd( sf::VideoMode( 800 , 600 ) , "SFML-tools library tests" ) ;
    wnd.setTitle(s);
 
    sf::Font fnt ;
    //Свой шрифт, поддерживающий кириллицу, поставьте
    if ( !fnt.loadFromFile("UbuntuMono-B.ttf") ) {
        return -1 ;
    }
 
    sf::Text txt ( s , fnt , 16 )  ;
    txt.setColor(sf::Color::White);
 
    while( wnd.isOpen() ){
        sf::Event event ;
        while( wnd.pollEvent( event ) ){
            if( event.type == sf::Event::Closed )
                wnd.close() ;
        }
        wnd.clear( sf::Color::Black ) ;
        wnd.draw(txt) ;
        wnd.display() ;
    }
}
Здесь цепочка преобразований std::string -> Glib::ustring -> sf::String.
Нормально ли выводится заголовок и текст в окне.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2015, 00:27     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String
Посмотрите здесь:

Visual C++ конвертирование
Компиляция с glib под виндой
C++ Конвертирование float/int to string
Дедушка, а что это за костыль у тебя? C++
В каких случаях необходимо включать include string C++
Glib.h в Windows C++
Асинхронные очереди Glib C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4247 / 2779 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
30.10.2015, 13:17     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #21
gru74ik, в msys pacman используется? Это дефолтный менеджер или прикручивается?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 1
30.10.2015, 13:39  [ТС]     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #22
Цитата Сообщение от Kastaneda Посмотреть сообщение
Это дефолтный менеджер или прикручивается?
по дефолту стоит
gru74ik
Модератор
 Аватар для gru74ik
3486 / 1495 / 179
Регистрация: 20.02.2013
Сообщений: 4,328
Записей в блоге: 21
30.10.2015, 13:45     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #23
Цитата Сообщение от Kastaneda Посмотреть сообщение
gru74ik, в msys pacman используется? Это дефолтный менеджер или прикручивается?
pacman дефолтный в msys2
Kastaneda
30.10.2015, 13:47
  #24

Не по теме:

круто, я в ArchLinux'е с ним одно время намучился, очень он сам себя обновлять не любил не умел

gru74ik
30.10.2015, 19:10
  #25

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
в ArchLinux'е с ним одно время намучился
ArchLinux, говорят, вообще из всех дистрибутивов GNU/Linux один из самых заморочных.

Kastaneda
30.10.2015, 19:16
  #26

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
ArchLinux, говорят, вообще из всех дистрибутивов GNU/Linux один из самых заморочных.
На самом деле один из самых простых. Самый замороченный Ubuntu и подобные. Простой пример - даже чтоб поставить тот же MySQL Ubuntu тут же в терминале создаст диалог, спросит пароль, еще что-нибудь и насует своих настроек в конфиг, которые ты потом руками будешь оттуда выкавыривать. Archlinux же молча поставит тебе MySQL с пустым конфигом, который ты потом как хочешь так и правишь. Простота в чистом виде

gru74ik
30.10.2015, 20:55
  #27

Не по теме:

Цитата Сообщение от Kastaneda Посмотреть сообщение
Простота в чистом виде
Ну видишь, кому-то надо "делай ровно то, что тебе сказали, нефиг отсебятину всякую пороть" (ArchLinux), а другому "фигачь отсебятину, но чтобы всё работало из коробки, не хочу разбираться во всех этих тонкостях" (Ubuntu).

DrOffset
6783 / 3994 / 916
Регистрация: 30.01.2014
Сообщений: 6,812
30.10.2015, 20:56     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #28
Цитата Сообщение от Croessmah Посмотреть сообщение
Нормально ли выводится заголовок и текст в окне.
Проверил. Нормально.

Пруф
Миниатюры
Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String  
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 1
30.10.2015, 21:53  [ТС]     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #29
Цитата Сообщение от DrOffset Посмотреть сообщение
Проверил. Нормально.
проверяли вариант из первого поста или
Цитата Сообщение от Croessmah Посмотреть сообщение
Сделал так
???
DrOffset
6783 / 3994 / 916
Регистрация: 30.01.2014
Сообщений: 6,812
31.10.2015, 02:11     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #30
Цитата Сообщение от Croessmah Посмотреть сообщение
проверяли вариант из первого поста
Да. Из первого поста.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 14:05     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String
Еще ссылки по теме:

C++ Необходимо протестировать костыль
C++ Убрать костыль typedef
Memo->Lines[1] - что за тип? костыль? C++ Builder C++ Builder
GLib-GObject-WARNING **: gsignal.c:2459: signal `expose-event' is invalid
Конвертирование из vector<string> в map C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 1
12.11.2015, 14:05  [ТС]     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String #31
Цитата Сообщение от Croessmah Посмотреть сообщение
Всё нормально будет. Поставлю вечером виртуалку, отпишусь
Итак, сегодня добрался до виртуалки.
Поставил msys2-i686-20150916
Затем mingw, pkg-config, gtkmm3 и sfml.
gtkmm тоже нужен, поэтому поставил сразу его, а он уж подтянет glibmm самостоятельно.
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-i686-pkg-config
pacman -S mingw-w64-i686-gtkmm3
pacman -S mingw-w64-i686-sfml

Затем занялся компиляцией исходника:
g++ -std=c++14 -o main.exe main.cpp `pkg-config sfml-all glibmm-2.4 --cflags --libs`

Всё нормально собралось.
Запустил. Вот здесь случилась бяка.
В заголовке текст отображается нормально, а в окне, текст (sf::Text) отображается криво - только белые силуэты символов.
Посмотрел ошибки. Всё это из-за "графической" системы на виртуалке. Не поддерживается нужная версия OpenGL.
Пристал я к рабочему, уже не виртуальному, компу с виндой. Поставил всё тоже самое. Всё нормально отображается.
Yandex
Объявления
12.11.2015, 14:05     Необходимо протестировать костыль. Конвертирование Glib::ustring в sf::String
Ответ Создать тему

Метки
c++, glib, glibmm, sfml, ustring
Опции темы

Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru