4 Stimmen

ostringstream-Problem mit int in C++

Ich würde erwarten, dass der folgende Code ausgegeben wird hello5 . Stattdessen gibt sie nur aus hello . Es scheint ein Problem bei dem Versuch zu sein, einen int an die ostringstream . Wenn ich das Gleiche direkt an cout Ich erhalte die erwartete Eingabe. Ich verwende XCode 3.2 auf Snow Leopard.

Gracias.

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main(){
 int myint = 5;
 string mystr = "hello";
 string finalstr;
 ostringstream oss;

 oss << mystr << myint;
 finalstr = oss.str();

 cout << finalstr;

 return 0;
}

EDIT: Siehe die Antwort, die ich unten gepostet habe. Dies scheint durch ein Problem in der aktiven Konfiguration "Debug" in XCode 3.2 auf Snow Leopard verursacht zu werden

4voto

Yuval Karmi Punkte 25529

Das Ändern der aktiven Konfiguration in XCode von "Debug" zu "Release" funktioniert als Workaround.

3voto

Patrick Glandien Punkte 7601

Ihr Code ist korrekt, er schreibt hello5 auf meinem Windows 7 Rechner. Vielleicht liegt das Problem eher darin, dass Sie kein std::endl oder etwas anderes schreiben, was Ihr Betriebssystem verwirren könnte.

2voto

Brendan Lesniak Punkte 2265

Ja, getestet auf dieser Seite (Windows XP Pro) und es funktioniert einwandfrei

1voto

epatel Punkte 45365

Ich habe es gerade getestet und es hat auf meinem Mac mit Xcode 3.2.1 und Snow Leopard einwandfrei funktioniert. Ist es nicht so, dass Ihr Prompt die Ausgabe überschattet? Versuchen Sie eine endl in die Zeile cout?

-- Bearbeiten --

Meine Testsuite

  • c++ test.cpp -- funktioniert einwandfrei
  • c++ -D_GLICXX_DEBUG=1 test.cpp -- durchfallen
  • c++ -arch i386 -D_GLICXX_DEBUG=1 test.cpp -- funktioniert einwandfrei

Was können wir dazu sagen? Kurz gesagt, Debug-Version von 64-Bit-stdc++ scheinen gebrochen werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X