bits zu bytes
-
ja, aber ich will das eigentlich gar nicht ausgeben, sondern an eine variable anhänge. im moment mache ich das so:
sprintf(buffer, "%s%c", buffer, bs.to_string());aber dann habe ich ja wieder dasselbe problem.
-
std::string kennt einen operator +
-
hm..vielleicht sollte ich doch auf c umsteigen

aber irgendwie klappt das eh nicht: wenn ich sowas habe:
std::bitset<8> bits(72); printf("%d\n", bits);dann kommt "72" raus, un nicht 001010 oder so.
-
Weisst du eigentlich, wofür %c, %d und %s bei printf stehen? Du benutzt irgendwie immer was anderes......
Machs doch einfach so:
#include <iostream> #include <bitset> using namespace std; int main() { bitset<4> bits( 15 ); string str; str = bits.to_string<char, char_traits<char>, allocator<char> >(); cout << str << endl; // Jetzt kannst an den string z. B. mit + was anhängen... }
-
oh mann, ich geh noch zu Grunde, ich hab das jetzt mal genau so übernommen, jetzt gibts 2 fehler:
1.: zeile 9: type 'char' unexpected
2.: zeile 10: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptabl
e conversion)
-
ok, jetzt noch ein Vorschlag:
#include <iostream> #include <bitset> #include <string> int main() { bitset<4> bs(15); string str; str = bs.to_string(); cout << str << endl; }jetzt will ich keine Klagen mehr hören (zumindest vom Compiler)

MfG
-
wo ist denn die "using namespace"-Zeile hin...
:#include <iostream> #include <bitset> #include <string> using namespace std; int main() { bitset<4> bs(15); string str; str = bs.to_string(); cout << str << endl; }MfG
-
Ja, sorry, Probe-Nutzers Vorschlag sollte jetzt aber laufen. Ich musste das mit dem char machen, weil mein Compiler sonst immer gemeckert hat. Hab ich vergessen dazu zuschreiben......

-
okay, jetzt bin ich endlich zufrieden

tausend dank an alle!
-
std::string kennt einen operator +
Standardmäßig nicht?
STLPort und MSVC haben den Operator nämlich implementiert.
MfG MAV
-
Wie standardmäßig nicht? Da steht "einen", nicht "keinen".....

-
und weiter gehts

kann man denn bei dem wert in den tag-zeichen ("<" und ">") keine variable verwenden? ich hab nämlich in einer variable die anzahl der benötigten bits gespeichert, aber wenn ich sie einsetze dann kommt ein fehler vom compiler, dass der wert in den klammern ungültig sei.
und wieso bleibt der verdammte compiler andauernd hängen?
-
Nein, das geht nicht. Es ist ein Template, und das muss zur Compilezeit feststehen.
-
hmm, das ist schlecht. dann muss ich das irgendwie anders lösen. gibt es denn eine funktion so ähnlich wie substr(), die also einen teilstring aus einem string extrahiert?
-
substr.
string x ("foobar"); cout << x.substr(0,3) << endl;
-
oh, danke

-
und gleich das nächste problem: ich hab jetzt in einem string einen dateinamen gepeichert und möchte diesen benutzen, um mit fopen eben diese datei zu öffnen. allerdings verlangt fopen eine variable vom typ char und ein (char) davor setzen nützt nichts.
-
fopen erwartet mich Sicherheit keinen char, sondern einen char* - eigentlich sogar einen const char*. Wie jedes gute Buch erklären sollte, kann man mit der .c_str()-Elementfunktion einen std::string als solchen C-String übergeben.
-
filename.c_str()
-
danke schön!
und wie kann ich überprüfen, ob eine datei existiert?