Question about comparing a string with a character

Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved

Join Date: Jan 2005
Posts: 31
Reputation: tat2dlady is an unknown quantity at this point 
Solved Threads: 0
tat2dlady tat2dlady is offline Offline
Light Poster

Question about comparing a string with a character

 
0
  #1
Mar 12th, 2005
Does anyone know how to compare a old style character string with a character in qoutes? Example:
I want to compare the first character in a record that is stored in an old style character string with a "*". Here's what I have in my code:

char FirstCharacter[1]; // Character string to hold to value found by
the peek() function

OutputFile.seekp(Total * 60);
//Seek to the correct position

FirstCharacter[0] = OutputFile.peek();
//FirstCharacter set equal to peek()

if (FirstCharacter[0] == "*")
{
cout << "Dummy Record";
}
//Try to compare value stored in FirstCharacter with a "*". If it is true, I know that I can write my record there.

It will not compare the string like it is. I get the error "Cannot convert char to char*". I tried strcmp() also, but to no avail. I get the error message "Cannot find a match for strcmp(char, char*). Anyone have any suggestions? Thanks a lot.
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 7,614
Reputation: Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute 
Solved Threads: 713
Team Colleague
Narue's Avatar
Narue Narue is offline Offline
Code Goddess

Re: Question about comparing a string with a character

 
0
  #2
Mar 12th, 2005
>char FirstCharacter[1]; // Character string to hold to value found by
This must be an empty string or it cannot be a string at all. C-style strings require a null character at the end as a terminator. You would really be better off just using a single char.

>if (FirstCharacter[0] == "*")
You don't compare strings with the == operator. Include <cstring> and do this:
  1. if ( strcmp ( FirstCharacter, "*" ) == 0 )
Of course, this assumes that you fix the first problem and FirstCharacter actually is a null terminated string. You can do it like this:
  1. char FirstCharacter[2] = {0};
  2.  
  3. // ...
  4.  
  5. FirstCharacter[0] = OutputFile.peek();
  6.  
  7. if ( strcmp ( FirstCharacter, "*" ) == 0 )
  8. cout<<"Dummy record"<<endl;
The "= {0}" part guarantees that a null character is placed in FirstCharacter[1]. But, as I said before, it's better to just use a character to begin with:
  1. char FirstCharacter;
  2.  
  3. // ...
  4.  
  5. FirstCharacter = OutputFile.peek();
  6.  
  7. if ( FirstCharacter == '*' )
  8. cout<<"Dummy record"<<endl;
Or even better:
  1. // ...
  2.  
  3. if ( OutputFile.peek() == '*' )
  4. cout<<"Dummy record"<<endl;
That avoids the need to even use a temporary variable.
I'm here to prove you wrong.
Reply With Quote Quick reply to this message  
Join Date: Jan 2005
Posts: 31
Reputation: tat2dlady is an unknown quantity at this point 
Solved Threads: 0
tat2dlady tat2dlady is offline Offline
Light Poster

Re: Question about comparing a string with a character

 
0
  #3
Mar 12th, 2005
Thank you. The "OutputFile.peek() == '*' " worked great. Thank you, thank you, thank you. I thought I had to store the value found with the peek() function.
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC