473,387 Members | 3,810 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

ISO C++ Error

compman9902
105 100+
Every time I run the compiler on the proceeding function, I get the following compiler error:
"ISO C++ forbids comparison between pointer and integer" On Line 15.
I am using Bloodshed Dev-C++ 4.9.9.2 on a Windows XP machine with service pack two.
Here is the function:
Expand|Select|Wrap|Line Numbers
  1. string sperat(string original)
  2. {
  3. string one;
  4. string two;
  5. char letter;
  6. int positionOne = 0;
  7. int positionTwo = 0;
  8. //End Variables
  9. //!*!*!*!*!*!*!*!*!*!*
  10. //!*!*!*!*!*!*!*!*!*!*
  11. //Begin Function Processes
  12. one = original + " ";
  13. while (positionOne != one.length()) {
  14.     letter = one[positionOne];
  15.     if (letter != " ") {
  16.                         positionOne = positionOne + 1;
  17.     }
  18.     else {
  19.                         one.replace(positionOne, 1, ",");
  20.                         two = two + one;
  21.                         positionOne = positionOne + 1;
  22.     }
  23. }
  24. return two;
  25. }
Thank you for your help.
Jun 30 '07 #1
7 1615
niskin
109 100+
Every time I run the compiler on the proceeding function, I get the following compiler error:
"ISO C++ forbids comparison between pointer and integer" On Line 15.
I am using Bloodshed Dev-C++ 4.9.9.2 on a Windows XP machine with service pack two.
Here is the function:
Expand|Select|Wrap|Line Numbers
  1. string sperat(string original)
  2. {
  3. string one;
  4. string two;
  5. char letter;
  6. int positionOne = 0;
  7. int positionTwo = 0;
  8. //End Variables
  9. //!*!*!*!*!*!*!*!*!*!*
  10. //!*!*!*!*!*!*!*!*!*!*
  11. //Begin Function Processes
  12. one = original + " ";
  13. while (positionOne != one.length()) {
  14.     letter = one[positionOne];
  15.     if (letter != " ") {
  16.                         positionOne = positionOne + 1;
  17.     }
  18.     else {
  19.                         one.replace(positionOne, 1, ",");
  20.                         two = two + one;
  21.                         positionOne = positionOne + 1;
  22.     }
  23. }
  24. return two;
  25. }
Thank you for your help.
Letter is a pointer to one[positionOne] and therefore you are comparing a pointer and an integer.
Jun 30 '07 #2
weaknessforcats
9,208 Expert Mod 8TB
It's here:
if (letter != " ") {
letter is a char the " " is a literal using " " means to use the address of the literal.

You should compare a single space to your single char:
Expand|Select|Wrap|Line Numbers
  1. if (letter != ' '{
  2.  
Just use single quotes instead of double quotes.
Jun 30 '07 #3
compman9902
105 100+
It's here:


letter is a char the " " is a literal using " " means to use the address of the literal.

You should compare a single space to your single char:
Expand|Select|Wrap|Line Numbers
  1. if (letter != ' '{
  2.  
Just use single quotes instead of double quotes.
That is great, It worked perfectly.
But, what is wrong with that function? What I'm trying to do is to replace all of the spaces with a cama.
Jul 1 '07 #4
weaknessforcats
9,208 Expert Mod 8TB
There were several things preventing it from working. I did a code-ectomy and reduced it to this:
Expand|Select|Wrap|Line Numbers
  1. string sperat(string original)
  2. {
  3.  
  4. unsigned int positionOne = 0;
  5. //End Variables
  6. //!*!*!*!*!*!*!*!*!*!*
  7. //!*!*!*!*!*!*!*!*!*!*
  8. //Begin Function Processes
  9.     while (positionOne <= original.size())
  10.    {
  11.  
  12.     if (original[positionOne] == ' ')
  13.     {
  14.        original[positionOne] = ',';
  15.     }
  16.     ++positionOne;
  17.  
  18.      }
  19.     return original;
  20. }
  21.  
You didn't need two strings. The argument, original, is a copy of the caller's string so you might as well just make the changes there and return a copy to the caller.

Your loop need to run from 0 to original.size(). Hence the <=.

You should use string::size() for the number of characters rather than string::length(). string::length() is deprecated since none of the other STL containers have a length() but they all have a size() for the number of elements in thje container.

Rather than use a replace I just assigned all space element a comma.
Jul 1 '07 #5
compman9902
105 100+
There were several things preventing it from working. I did a code-ectomy and reduced it to this:
Expand|Select|Wrap|Line Numbers
  1. string sperat(string original)
  2. {
  3.  
  4. unsigned int positionOne = 0;
  5. //End Variables
  6. //!*!*!*!*!*!*!*!*!*!*
  7. //!*!*!*!*!*!*!*!*!*!*
  8. //Begin Function Processes
  9.     while (positionOne <= original.size())
  10.    {
  11.  
  12.     if (original[positionOne] == ' ')
  13.     {
  14.        original[positionOne] = ',';
  15.     }
  16.     ++positionOne;
  17.  
  18.      }
  19.     return original;
  20. }
  21.  
You didn't need two strings. The argument, original, is a copy of the caller's string so you might as well just make the changes there and return a copy to the caller.

Your loop need to run from 0 to original.size(). Hence the <=.

You should use string::size() for the number of characters rather than string::length(). string::length() is deprecated since none of the other STL containers have a length() but they all have a size() for the number of elements in thje container.

Rather than use a replace I just assigned all space element a comma.
Alright, thank you a lot for all of the effort.
Just one question: what is an unsigned int, and why would you use it?
I've just never had seen that type of variable beofre today.
Jul 1 '07 #6
weaknessforcats
9,208 Expert Mod 8TB
An unsigned int is just an integer where the sign bit is part of the integer value. By doing this you can store a number twice as large as can fit in an int but the value must always be positive.

The return from string::size() is an unsigned int. If I assign that to an int, the compiler will give me a warning about truncation and possible loss of data.
Jul 2 '07 #7
compman9902
105 100+
An unsigned int is just an integer where the sign bit is part of the integer value. By doing this you can store a number twice as large as can fit in an int but the value must always be positive.

The return from string::size() is an unsigned int. If I assign that to an int, the compiler will give me a warning about truncation and possible loss of data.
Oh, okay.
Well, thank you for all the help and effort put into this, it has helped me a lot.
Also, I just wanted to say that this website and all of its users are a great help to people like me: barley into their teen years, self taught at programming, and willing to learn.
Thanks.
Jul 29 '07 #8

Sign in to post your reply or Sign up for a free account.

Similar topics

2
by: AIM | last post by:
Error in msvc in building inheritance.obj to build hello.pyd Hello, I am trying to build the boost 1.31.0 sample extension hello.cpp. I can not compile the file inheritance.cpp because the two...
2
by: Gregory | last post by:
Hi, One of the disadvantages of using error handling with error codes instead of exception handling is that error codes retuned from a function can be forgotten to check thus leading to...
13
by: deko | last post by:
I use this convention frequently: Exit_Here: Exit Sub HandleErr: Select Case Err.Number Case 3163 Resume Next Case 3376 Resume Next
7
by: p | last post by:
WE had a Crystal 8 WebApp using vs 2002 which we upgraded to VS2003. I also have Crystal 9 pro on my development machine. The web app runs fine on my dev machine but am having problems deploying....
3
by: Manuel | last post by:
I'm trying to compile glut 3.7.6 (dowbloaded from official site)using devc++. So I've imported the glut32.dsp into devc++, included manually some headers, and start to compile. It return a very...
0
by: bazzer | last post by:
hey, im trying to access a microsoft access database from an ASP.NET web application in visual basic 2003.NET. i get the following error when i try running it: Server Error in...
1
by: developer | last post by:
Hi All I have made a .NET project. the files included are borland c++ files that i am migrate to VC++ .NET I am using Microsoft Visual C++ .NET 2003. the compilation goes through properly,...
0
by: mchuc7719 | last post by:
Hello, I have a Vb.Net 2005 ClassLibrary, when I try to compile using MSBee, only get errors. Before I to run the command line, I open in notepad the .vbproj and I was add the next line: ...
2
hyperpau
by: hyperpau | last post by:
Before anything else, I am not a very technical expert when it comes to VBA coding. I learned most of what I know by the excellent Access/VBA forum from bytes.com (formerly thescripts.com). Ergo, I...
0
hyperpau
by: hyperpau | last post by:
Before anything else, I am not a very technical expert when it comes to VBA coding. I learned most of what I know by the excellent Access/VBA forum from bytes.com (formerly thescripts.com). Ergo, I...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.