RSS Forums RSS
Please support our C++ advertiser: Programming Forums
Views: 2192 | Replies: 2 | Thread Tools  Display Modes
Reply
Join Date: Jul 2005
Location: Northern Ireland
Posts: 11
Reputation: ramcfloyn is an unknown quantity at this point 
Rep Power: 4
Solved Threads: 0
ramcfloyn ramcfloyn is offline Offline
Newbie Poster

Bitset

  #1  
Sep 8th, 2005
Im attempting to do bitwise operations on a character string and want to use the bitset template. I am having some trouble, it doesnt seem to like to be constructed using a char* string or std::string... I'm knew to this particular template. Here is what I'm attempting:

std::bitset<3000> Line("abcdefghijklmnop...");

anyone any ideas? Would be much appreciated, I want to get into the mentality of using the C++ STL. :eek:
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Apr 2004
Posts: 3,809
Reputation: Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light Dave Sinkula is a glorious beacon of light 
Rep Power: 17
Solved Threads: 147
Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: Bitset

  #2  
Sep 8th, 2005
Originally Posted by ramcfloyn
any ideas?
I'm not really sure, but it sort of sounds like you want to do something along this line...
#include <iostream>
#include <bitset>
#include <vector>
#include <algorithm>

int main()
{
   static const char init[] = "abcdefghijklmnop...";
   std::vector<std::bitset<8> > str(init, init + sizeof init);
   std::copy(str.begin(), str.end(),
      std::ostream_iterator<std::bitset<8> > (std::cout, "\n"));
   return 0;
}

/* my output
01100001
01100010
01100011
01100100
01100101
01100110
01100111
01101000
01101001
01101010
01101011
01101100
01101101
01101110
01101111
01110000
00101110
00101110
00101110
00000000
*/
Which I think is saying that I believe you need to do the bitset differently.
High Plains Blogger #plains #lounge ## I, for one, welcome our new socialist overlords.
"Capitalism is the unequal distribution of wealth. Socialism is the equal distribution of poverty."
Reply With Quote  
Join Date: Jul 2005
Location: Northern Ireland
Posts: 11
Reputation: ramcfloyn is an unknown quantity at this point 
Rep Power: 4
Solved Threads: 0
ramcfloyn ramcfloyn is offline Offline
Newbie Poster

Re: Bitset

  #3  
Sep 9th, 2005
Thanks Dave. Maybe I should have explained my problem better though. I am getting a character string that represents a line in an image, in order to do a pixel count for that line of the image I need to get the value of individual bits of the characters. Here is what I have written:

[PHP]#include <iostream>
#include <bitset>
#include <cstring>
#include <stdlib>

int main()
{
long pixelCount = 0;
char* pLine;
long startX = 10; //arbitrary starting point on line
long endX = 45; //arbitrary end point on line

/* section of code that returns a char string pLine
this line is 312 bytes long*/
pLine = "HELLO"; //Used for example

for(long x = startX; x < endX; x++)
{
char init = pLine[x]; //retrieving individual char
std::bitset<8> bits(init);

if(bits.any()) //checking if any bits of the char are on
{
for(int i = 0; i < 7; i++)
{
if(bits.test(i))
{
pixelCount++; //test each bit and if set increment count
}
}
}
}
std::cout << pixelCount << std::endl;
system("PAUSE");
return 0;
}[/PHP]

Giving a count of 35

Originally I wanted to use the bitset::count on the entire char string but it wasn't possible to set up a bitset with the character string, so i tried to use it on just individual chars but got a compile error in Borland:

[Linker Error] Unresolved external '_STL::_Bs_G<bool>::_S_bit_count' referenced from C:\DOCUMENTS AND SETTINGS\MY DOCUMENTS\SRC

i was calling it like so:
[PHP] bits.count();[/PHP]

The way I have done it is working fine, just thought if the bitset::count member was function was availaiable it would increase speed?!
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes
Forums | Blogs | Tutorials | Code Snippets | Whitepapers | RSS Feeds | Advertising
All times are GMT -4. The time now is 8:09 am.
Newsletter Archive - Sitemap - Privacy Statement - Acceptable Use Policy - Contact Us
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC