Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Jevermeister

Treue Seele

  • »Jevermeister« ist der Autor dieses Themas

Beiträge: 130

Wohnort: Bremerhaven

Beruf: Student

  • Private Nachricht senden

1

20.12.2008, 03:08

[Erledigt] Probleme mit stringstreams + sfml

moin,

ich hab mich mal endlich rangewagt und möchte in den semesterferien einen kleinen 2d sidescroller coden. das erste wagnis ist jedenfalls schon da.
hier ist die betreffende funktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
bool boom::take_scrshot(std::string filename) {
        std::stringstream resulting_name;
        resulting_name << filename << m_scrshot_nr++ << ".jpg" << std::endl;
        //std::cout << resulting_name.str() << std::endl;

        sf::Image Screen = m_window.Capture();
        Screen.SaveToFile(resulting_name.str());
    }


die methode bekommt also einen string übergeben, bei mir ist es "screenshot". damit ich mehrere screenshots machen kann, zählt er nach jedem screenshot die membervariable m_scrshot_nr hoch.

ich weiss, das die methode einen rückgabewert erwartet, da muss ich mich noch schlau lesen wie ich die rückgabe von screen interpretieren muss.
aber darum geht es nicht, ich schiebe erst alles fröhlich in den stringstream und möchte an den resultierenden string später per str() ran. beim cout funktioniert es noch ganz super, SaveToFile meckert allerdings rum:
Failed to save image "screenshot0.jpg". Reason: this image format is not supported.
übergebe ich aber direkt "screenshot0.jpg" hat er damit kein problem.

wo liegt das problem?
die str() gibt doch einen stinknormalen string zurück oder nicht?

danke im voraus und seid nicht so streng. ich komme aus der javawelt und programmiere c++ erst seit knapp 4 monaten ;)

Anonymous

unregistriert

2

20.12.2008, 09:09

Les die Fehlermeldung:
Failed to save image "screenshot0.jpg". Reason: this image format is not supported.

Da steht nichts von Reason: this c++ data type is not supported.

Dazu würdest du dann schon zu Compilerzeit einen Fehler bekommen und nicht zur Runtime.

Ansonsten mach hinter deinem str() noch ein c_str ()

3

20.12.2008, 10:40

Lass mal das endl aus dem String weg.
Lieber dumm fragen, als dumm bleiben!

Jevermeister

Treue Seele

  • »Jevermeister« ist der Autor dieses Themas

Beiträge: 130

Wohnort: Bremerhaven

Beruf: Student

  • Private Nachricht senden

4

20.12.2008, 12:09

Ach ja, da hätt ich auch selber drauf kommen können.
Spät nachts programmieren :roll:

Danke!

5

21.12.2008, 14:34

(1) Übergabe by ref
(2) const-Rückgabewert
(3) std::ostringstream
(4) c-tor statt c-tor u. assign-op oder einfach ganz sein lassen :D
(5) std::endl weglassen
(6) return statement missing
(7) do not take something out of your display :D

=>

C-/C++-Quelltext

1
2
3
4
5
6
7
8
const bool boom::make_screenshot(std::string const& filename) 
{
    static unsigned int id(0);
    std::ostringstream ss;
    ss << filename << std::setw(2) << id++ << ".png";

    return m_window.Capture().SaveToFile(ss.str());
}
so sollte das doch auch io gehen ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige