By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,655 Members | 959 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,655 IT Pros & Developers. It's quick & easy.

Convert string to binary

P: n/a
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.
Jul 23 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On Mon, 31 Jan 2005 03:14:12 +0100 in comp.lang.c++, Matej Barac
<ma*********@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"));
}
Jul 23 '05 #2

P: n/a
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
<ma*********@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.
Jul 23 '05 #3

P: n/a
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:di***********@yahoo.com> <http://www.dietmar-kuehl.de/>
<http://www.contendix.com> - Software Development & Consulting

Jul 23 '05 #4

P: n/a
On Mon, 31 Jan 2005 04:33:29 +0100 in comp.lang.c++, Matej Barac
<ma*********@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';
}

Jul 23 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.