I am receiving the error: identifier "string" undefined.
However, I am including string.h and in my main file, everything is working fine.
CODE:
#pragma once
#include <iostream>
#include <time.h>
#include <string.h>
class difficulty
{
private:
int lives;
string level;
public:
difficulty(void);
~difficulty(void);
void setLives(int newLives);
int getLives();
void setLevel(string newLevel);
string getLevel();
};
Can someone please explain to me why this is occurring?
String Identifiers (StringIDs) are a special type of output data used to represent some of the strings that the z/OS XML parser encounters during a parse.
In C++, you should use the string header. Write #include <string> at the top of your file. When you declare a variable, the type is string , and it's in the std namespace, so its full name is std::string .
The C++ String class has length() and size() function. These can be used to get the length of a string type object. To get the length of the traditional C like strings, we can use the strlen() function. That is present under the cstring header file.
<string.h>
is the old C header. C++ provides <string>
, and then it should be referred to as std::string
.
You want to do #include <string>
instead of string.h
and then the type string
lives in the std
namespace, so you will need to use std::string
to refer to it.
You forgot the namespace you're referring to. Add
using namespace std;
to avoid std::string all the time.
Because string
is defined in the namespace std
. Replace string
with std::string
, or add
using std::string;
below your include
lines.
It probably works in main.cpp
because some other header has this using
line in it (or something similar).
Perhaps you wanted to #include<string>
, not <string.h>
. std::string
also needs a namespace qualification, or an explicit using
directive.
You must use std namespace. If this code in main.cpp you should write
using namespace std;
If this declaration is in header, then you shouldn't include namespace and just write
std::string level;
#include <string>
would be the correct c++ include, also you need to specify the namespace with std::string
or more generally with using namespace std;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With