Witam. Tak jak widać kodzie poniżej chciałem wprowadzić do zmiennej string polskie słowo używając L przed cudzysłowem (nie znam fachowej nazwy tego), ale niestety kompilator pokazuje taki błąd:
error: no match for 'operator=' (operand types are 'std::string {aka std::basic_string<char>}' and 'const wchar_t [11]')
//początek
std::string volume;
//w obsłudze jakiegoś zdarzenia
volume = L"Głośność: ";
//w pętli głównej programu
sf::Text glosnosc(volume , comic, 50 );
Gdy usunę L sprzed cudzysłowu to wszystko się kompiluje ale w programie są krzaki zamiast polskich znaków. Jest jakiś sposób aby nie było tych krzaków?
EDIT: podaję kod źródłowy:
#include <iostream>
#include <string>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/Audio.hpp>
#include <cmath>
int mainvolume =100;
int vol = mainvolume;
std::wstring volume;
std::wstring intToStr(int n);
int main( int argc, char ** argv )
{
sf::RenderWindow oknoAplikacji ( sf::VideoMode (800,600,32),"Kurs1");
sf::Texture tekstura; //grafika
tekstura.loadFromFile( "Grafika/1.png" );
sf::Sprite obrazek;
obrazek.setTexture( tekstura ); //grafika koniec
sf::Music muzyka; //muzyka
muzyka.openFromFile("Music.ogg");
muzyka.play();
muzyka.setVolume(mainvolume); //muzyka koniec
sf::Font comic; //tekst i czcionki
comic.loadFromFile ("Fonts/comic.ttf");
//tekst i czcionki koniec
while( oknoAplikacji.isOpen() ) // pêtla g³ówna
{
sf::Event zdarzenie;
while( oknoAplikacji.pollEvent( zdarzenie ) ) //tu obs³uga zdarzeñ
{
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Up )/* podgłaśnianie */ {
mainvolume=vol+3;
vol=mainvolume;
if(mainvolume==99) { muzyka.setVolume(100);}
else {muzyka.setVolume(mainvolume);}
volume = L"Głośność: " ;
volume += mainvolume;
}
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Down )/* przyciszanie */ {
mainvolume=vol-3;
vol=mainvolume;
if(mainvolume==1) { muzyka.setVolume(0);}
else {muzyka.setVolume(mainvolume);}
volume = L"Głośność: ";
volume += mainvolume;
}
if( zdarzenie.type == sf::Event::Closed ) oknoAplikacji.close();
}
vol = mainvolume;
oknoAplikacji.clear( sf::Color::Black );
oknoAplikacji.draw( obrazek );
sf::Text glosnosc(volume , comic, 50 );
glosnosc.setColor(sf::Color::Green);
oknoAplikacji.draw(glosnosc);
oknoAplikacji.display();
} return 0;
}