wut do i use to check if cin equals a word and not a number like
Code:#include <iostream.h>
int main()
{
int name;
cin >> name;
if (name == "bob")
{
cout << "hello john\n"
}
else
{
cout << "hello bob\n";
}
return 0;
}
Printable View
wut do i use to check if cin equals a word and not a number like
Code:#include <iostream.h>
int main()
{
int name;
cin >> name;
if (name == "bob")
{
cout << "hello john\n"
}
else
{
cout << "hello bob\n";
}
return 0;
}
You might try including <cstring> and declaring name as a string instead of an int. Or, since it looks like you don't want to use namespaces, include <string.h>.
im a beginner so wut do you mean by that
try this handy little function strcmp
Code:#include <iostream>
#include <string>
using namespace std;
int main()
{
char name[30];//make it a char instead of a int
cin.getline(name,30,'\n');//getline does not terminate at white spaces like cin>>
if(strcmp(name,"bob")==0)//Very nice function :)
{
cout<<"Hi bob"<<endl;
}
else
{
cout<<"Hi"<<endl;
}
return 0;
}
Oh and to explain why you need
is because strcmp returns 0 on it being true and non zero on the comprason being falseCode:if(strcmp(name,"bob")==0)
i think you mean how to check if you typed a number or a word?
well if this is the case you can use :
if not what you want just forget it ;-)Code:int main()
{
int num;
if(cin >> num)
cout << "a number";
else
cout << "not a number";
cout << endl;
return 0;
}
thx prog but wut is the 30 after te char for???
its called an array :) basically its declaring name to be able to hold 30 char's try this on for size
Code:char name[30]="Brian";//declare a 30 element char array
for(int i = 0,i<30,i++)//loop though to print out whats at which element
{
cout<<name[i]<<endl;//print out the current value at this element
}
prog-bman - In your example above you used strcmp which is in <cstring>, but you included <string> instead. That code won't work until you fix the header include.
killdragon - <cstring> holds c style string functions like strcmp. You might also recognize this as <string.h>, they are basically the same except <cstring> is the newer, preferred version.
If you want to learn strings to get words and stuff, I would suggest learning the string class. It might be easier to learn, and it is probably harder to mess up, than the C style character array strings used in prog-bman's example. The standard string class is also a more C++ way of doing things (as opposed to C). The header for the string class is <string>, and is completely different than <cstring> and <string.h>.
And just for more info, here is the sample program using the string class:Code:#include <iostream>
#include <string>
using namespace std;
int main()
{
string name; // make it a string instead of a char array or int
getline(cin, name); // this version of getline takes cin as an argument.
if (name == "bob")
{
cout<<"Hi bob"<<endl;
}
else
{
cout<<"Hi"<<endl;
}
return 0;
}
Yes the string class is safer to work with sorry :(Quote:
Originally Posted by jlou
I'm sure all of everyone's methods who replied work, but I (out of a bit of a challenge) created my own method. Basically it tests to see if 0-9 are included in the string.
Code:#include <iostream.h>
#include <string.h>
int main()
{
char name[30];
int i;
int error_val;
do
{
cout<<"Enter your name: ";
cin.getline(name, 30, '\n');
cout<<"\nYour name is: ";
for(i=0; i<=strlen(name); i++)
{
if(name[i]!='0' && name[i]!='1' && name[i]!='2' && name[i]!='3' && name[i]!='4' && name[i]!='5' && name[i]!='6' && name[i]!='7' && name[i]!='8' && name[i]!='9')
{
cout<<name[i];
error_val=0;
}
else
{
cout<<"\n\nPlease do not use numbers.\n\n";
error_val=1;
break;
}
}
}while(error_val!=0);
return 0;
}
Also, progbman, it's shorter than:
if you just use:Quote:
Originally Posted by prog-bman
Code:if(!strcmp(name,"bob"))
hey i used the code from jlou cause that looked easier and when i compile it i get 8 erros
i get that when i compile the headers (#include <string.h>) with te .h part, when i take out the .h part of both of them i get two errors like thisCode:C:\Program Files\DevStudio\MyProjects\test\main.cpp(3) : error C2871: 'std' : does not exist or is not a namespace
C:\Program Files\DevStudio\MyProjects\test\main.cpp(7) : error C2065: 'string' : undeclared identifier
C:\Program Files\DevStudio\MyProjects\test\main.cpp(7) : error C2146: syntax error : missing ';' before identifier 'name'
C:\Program Files\DevStudio\MyProjects\test\main.cpp(7) : error C2065: 'name' : undeclared identifier
C:\Program Files\DevStudio\MyProjects\test\main.cpp(8) : error C2065: 'getline' : undeclared identifier
C:\Program Files\DevStudio\MyProjects\test\main.cpp(9) : error C2446: '==' : no conversion from 'char *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Program Files\DevStudio\MyProjects\tes\main.cpp(32) : error C2143: syntax error : missing ';' before 'return'
C:\Program Files\DevStudio\MyProjects\test\main.cpp(33) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.
test.exe - 8 error(s), 0 warning(s)
i am using microsoft visual c++ 5.0 if that mattrersCode:C:\Program Files\DevStudio\MyProjects\test\main.cpp(32) : error C2143: syntax error : missing ';' before 'return'
C:\Program Files\DevStudio\MyProjects\test\main.cpp(33) : error C2143: syntax error : missing ';' before '}'
Error executing cl.exe.
test.exe - 2 error(s), 0 warning(s)
It compiles to exactly the same machine code, so it doesn't matter.Quote:
Also, progbman, it's shorter than:
Quote:
Originally Posted by prog-bman
Code:
if(strcmp(name,"bob")==0)
if you just use:
Code:
if(!strcmp(name,"bob"))
Well usually when the compiler tell you that you have errors and that you are missing the ; it usually means that you are missing them somewhere.....if you look closely enough I bet you can find them ;) . If not, the error messages even tell you what line they are on. Good Luck!Quote:
Originally Posted by killdragon
omg i found out that the problem was that i had two
return 0;
} and the second one was far down cause i erased other code tthat was there but forgot that one...hhaha,
can ne1 help me with this though,a run a program i have to clodse visual cpp cause it performed an illegal operation, its getting very irratating...ne know how to fix that??
ok now that i have ran the program it does this-->you type something, and even if wut you type is "bob" then you type something else again, then after that it says hi bob????????
EDIT: i used my borland compiler and it worked fine, wut the hells wrong with msviual cpp???
It's hard to tell what the problem is - is it that you have to type two different things (hitting enter twice) before you get your answer, or is it that you can type in anything and it always says "Hi bob"?
If it's the first one, there is a bug in MSVC++ 6.0, which may or may not be there in 5.0 (I don't know anything about 5.0). Try this link just in case it fixes your problem, it refers to both 5.0 and 6.0. Scroll down to the part about <string>.
http://www.dinkumware.com/vc_fixes.html
Try giving us the code so far, and what your concept is (what you are trying to do).Quote:
Originally Posted by killdragon