user2925557
user2925557

Reputation: 85

C++ std::getline error

I'm new to C++, could someone please explain to me why I received the below errors when I do use "std::getline"? Here's the code:

#include <iostream>
#include <string>

int main() {

  string name;  //receive an error here

  std::cout << "Enter your entire name (first and last)." << endl;
  std::getline(std::cin, name);

  std::cout << "Your full name is " << name << endl;

  return 0;
}


ERRORS:
te.cc: In function `int main()':
te.cc:7: error: `string' was not declared in this scope
te.cc:7: error: expected `;' before "name"
te.cc:11: error: `endl' was not declared in this scope
te.cc:12: error: `name' was not declared in this scope

However, the program would run and compile when I used "getline" with "using namespace std;" instead of std::getline.

#include <iostream>
#include <string>

using namespace std;

int main() {

  string name;

  cout << "Enter your entire name (first and last)." << endl;
  getline(cin, name);

  cout << "Your full name is " << name << endl;
  return 0;
} 

Thank you!

Upvotes: 4

Views: 8477

Answers (4)

GobeRadJem32
GobeRadJem32

Reputation: 102

Try this:

 #include <iostream>
#include <string>

int main() 
{
     std::string name; 

      std::cout << "Enter your entire name (first and last)." << 
      std::endl;

      while(getline(std::cin, name))
      {
            std::cout <<"Your name is:"<< name << '\n';
     }

  return 0;
}

Upvotes: 0

Zac Howland
Zac Howland

Reputation: 15872

#include <iostream>
#include <string>

int main() 
{
    std::string name;  // note the std::

    std::cout << "Enter your entire name (first and last)." << std::endl; // same here
    std::getline(std::cin, name);

    std::cout << "Your full name is " << name << std::endl; // and again

    return 0;
}

You just needed to state the namespace for various elements that are in the std namespace (alternatively, you can remove all the std::s and place a using namespace std; line after your includes.)

Upvotes: 1

Fred Larson
Fred Larson

Reputation: 62053

You need to use std:: on all the identifiers from that namespace. In this case, std::string and std::endl. You can get away without it on getline(), since Koenig lookup takes care of that for you.

Upvotes: 4

woolstar
woolstar

Reputation: 5083

The errors are not from std::getline. The error is you need to use std::string unless you use the using namespace std. Also would need std::endl.

Upvotes: 8

Related Questions