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.

Edited by happygeek: fixed formatting

11 Years
Discussion Span
Last Post by tat2dlady

>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:

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:

char FirstCharacter[2] = {0};

// ...

FirstCharacter[0] = OutputFile.peek();

if ( strcmp ( FirstCharacter, "*" ) == 0 )
  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:

char FirstCharacter;

// ...

FirstCharacter = OutputFile.peek();

if ( FirstCharacter == '*' )
  cout<<"Dummy record"<<endl;

Or even better:

// ...

if ( OutputFile.peek() == '*' )
  cout<<"Dummy record"<<endl;

That avoids the need to even use a temporary variable.


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. :)

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.