Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Convert string to binary (http://www.velocityreviews.com/forums/t288521-convert-string-to-binary.html)

Matej Barac 01-31-2005 02:14 AM

Convert string to binary
 
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.

David Harmon 01-31-2005 02:30 AM

Re: Convert string to binary
 
On Mon, 31 Jan 2005 03:14:12 +0100 in comp.lang.c++, Matej Barac
<matej.barac@gmail.com> 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"));
}



Matej Barac 01-31-2005 03:33 AM

Re: Convert string to binary
 
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
> <matej.barac@gmail.com> 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.

Dietmar Kuehl 01-31-2005 06:09 PM

Re: Convert string to binary
 
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::ostream_iterator<
/**/ std::bitset<std::numeric_limits<char>::digits>
/**/ >(std::cout, "\n"));
--
<mailto:dietmar_kuehl@yahoo.com> <http://www.dietmar-kuehl.de/>
<http://www.contendix.com> - Software Development & Consulting


David Harmon 01-31-2005 07:56 PM

Re: Convert string to binary
 
On Mon, 31 Jan 2005 04:33:29 +0100 in comp.lang.c++, Matej Barac
<matej.barac@gmail.com> 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';
}



All times are GMT. The time now is 02:20 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57