Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Convert string to binary

Reply
Thread Tools

Convert string to binary

 
 
Matej Barac
Guest
Posts: n/a
 
      01-31-2005
I want to read a file then save it's binary data as a .txt with one's and
zero's representing the actual file's bits. So it could be later
reconstructed from that txt file. As of yet, I read the file into a string.

I've tried something with bitset but I can't seem to have it read a string.
 
Reply With Quote
 
 
 
 
David Harmon
Guest
Posts: n/a
 
      01-31-2005
On Mon, 31 Jan 2005 03:14:12 +0100 in comp.lang.c++, Matej Barac
<(E-Mail Removed)> wrote,
>I want to read a file then save it's binary data as a .txt with one's and
>zero's representing the actual file's bits. So it could be later
>reconstructed from that txt file. As of yet, I read the file into a string.
>
>I've tried something with bitset but I can't seem to have it read a string.


What happened when you tried?
Where is your code?

This issue is covered in Marshall Cline's C++ FAQ. See the topic
"[5.8] How do I post a question about code that doesn't work
correctly?" It is always good to check the FAQ before posting. You
can get the FAQ at:
http://www.parashift.com/c++-faq-lite/

Compare:

#include <iostream>
#include <iterator>
#include <bitset>
using namespace std;
int main()
{
std::copy(istream_iterator<char>(cin),
istream_iterator<char>(),
ostream_iterator<bitset<8> >(cout, "\n"));
}


 
Reply With Quote
 
 
 
 
Matej Barac
Guest
Posts: n/a
 
      01-31-2005
On Mon, 31 Jan 2005 02:30:26 GMT, David Harmon wrote:

> On Mon, 31 Jan 2005 03:14:12 +0100 in comp.lang.c++, Matej Barac
> <(E-Mail Removed)> wrote,
>>I want to read a file then save it's binary data as a .txt with one's and
>>zero's representing the actual file's bits. So it could be later
>>reconstructed from that txt file. As of yet, I read the file into a string.
>>
>>I've tried something with bitset but I can't seem to have it read a string.

>
> What happened when you tried?
> Where is your code?
>
> This issue is covered in Marshall Cline's C++ FAQ. See the topic
> "[5.8] How do I post a question about code that doesn't work
> correctly?" It is always good to check the FAQ before posting. You
> can get the FAQ at:
> http://www.parashift.com/c++-faq-lite/
>
> Compare:
>
> #include <iostream>
> #include <iterator>
> #include <bitset>
> using namespace std;
> int main()
> {
> std::copy(istream_iterator<char>(cin),
> istream_iterator<char>(),
> ostream_iterator<bitset<8> >(cout, "\n"));
> }


Sorry, but as I said I don't have any (working) code except the read/write
file part. I have some trouble with turning a string into a bitset.

Shouldn't the below work?

string input; // read from input file
bitset<10> bit((string) input);
cout << bit;

Compiles but produces a runtime error.
 
Reply With Quote
 
Dietmar Kuehl
Guest
Posts: n/a
 
      01-31-2005
David Harmon wrote:
> std::copy(istream_iterator<char>(cin),
> istream_iterator<char>(),
> ostream_iterator<bitset<8> >(cout, "\n"));


Note that this will remove whitespaces or, more precisely, the bits
representing them: 'std::istream_iterator<T>' uses the formatted input
operations to read the data. By default, the formatted input functions
skip leading whitespace, even if they just read a single character.
Also, there is no guarantee that 'char' has exactly 8 bits: the
standard only guarantees that it has at least 8 bits. You might want to
use this instead:

/**/ std::copy(std::istreambuf_iterator<char>(std::cin) ),
/**/ std::istreambuf_iterator<char>(),
/**/ std:stream_iterator<
/**/ std::bitset<std::numeric_limits<char>::digits>
/**/ >(std::cout, "\n"));
--
<(E-Mail Removed)> <http://www.dietmar-kuehl.de/>
<http://www.contendix.com> - Software Development & Consulting

 
Reply With Quote
 
David Harmon
Guest
Posts: n/a
 
      01-31-2005
On Mon, 31 Jan 2005 04:33:29 +0100 in comp.lang.c++, Matej Barac
<(E-Mail Removed)> wrote,
>Shouldn't the below work?
>
>string input; // read from input file
>bitset<10> bit((string) input);
>cout << bit;


A string is a sequence of characters. You want to convert the
characters one by one, not the whole string at once.

//(E.g. Using a clunky loop instead of std::copy)

for(int i=0; i<input.size(); ++i) {
cout << bitset<8>(input[i]) << '\n';
}

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to Convert a string into binary HNT20 Python 15 10-08-2009 09:48 PM
Convert to binary and convert back to strings Harlin Seritt Python 29 02-24-2007 09:33 AM
convert a long string in binary bussiere maillist Python 3 08-22-2006 10:08 AM
Convert hexadecimal string to binary Eric Python 3 04-22-2004 06:42 PM
convert string with raw binary data to unicode Achim Domma Python 3 02-17-2004 04:02 PM



Advertisments