Hey guys, I have been told that the getline function in C++ is a standard library member but is this true as the #include <stdlib> header file does not have to be included in order for getline to work?
Thanks.
Hey guys, I have been told that the getline function in C++ is a standard library member but is this true as the #include <stdlib> header file does not have to be included in order for getline to work?
Thanks.
Jump to Postyes getline is apart of the standard library.
you still need to let the compiler know what libs you will be linking with.
I thought getline was in string.h.
Jump to PostNO! string.h is C, not C++. its declared as I posted above. C uses gets() and fgets(), not getline(). and both of them are declared in stdio.h, not string.h.
I stand corrected... brain fart.... howerver, there does happen to be a stdlib.h.
/***
*stdlib.h - declarations/definitions for commonly used …
saying something is part of the standard c++ library doesn't mean it is declared in <stdlib> -- and there is no such header file. you probably mean <cstdlib>, which was derived form C language.
getline() is a method of std::string class and (I think) iostream.
#include <iostream>
#include <string>
int main()
{
std::cout << "Enter someting" << std::endl;
std::string line;
std::getline(std::cin,line);
}
or
#include <iostream>
int main()
{
char line[120];
std::cout << "Enter someting" << std::endl;
std::cin.getline(line,sizeof(line));
}
yes getline is apart of the standard library.
you still need to let the compiler know what libs you will be linking with.
I thought getline was in string.h.
yes getline is apart of the standard library.
I thought getline was in string.h.
NO! string.h is C, not C++. its declared as I posted above. C uses gets() and fgets(), not getline(). and both of them are declared in stdio.h, not string.h.
NO! string.h is C, not C++. its declared as I posted above. C uses gets() and fgets(), not getline(). and both of them are declared in stdio.h, not string.h.
I stand corrected... brain fart.... howerver, there does happen to be a stdlib.h.
/***
*stdlib.h - declarations/definitions for commonly used library functions
*
* Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* This include file contains the function declarations for commonly
* used library functions which either don't fit somewhere else, or,
* cannot be declared in the normal place for other reasons.
* [ANSI]
*
* [Public]
*
****/
I stand corrected... brain fart.... howerver, there does happen to be a stdlib.h.
Yes there is -- but its C, not C++. and just look at the copyright dates that you posted, that file is at 8-21 years old! The most recent c++ standard was in (I think) 1998.
C++ system headers do not use .h file extensions. The c++ equivalent is <cstdlib>. If your c++ compiler does not support <cstdlib> then you need to toss that piece of trash into the bit bucket and get a more modern compiler, such as Dev-C++ or any of a number of others.
Your compiler may well compile stdlib.h with no problems -- but you run the danger that it will not contain up-to-date functions that are in <cstdlib>. I know VC++ 6.0/7.0/8.0 cstdlib just simply includes stdlib.h, but that by no means other compiler follow that.
>getline() is a method of std::string class and (I think) iostream.
It depends on which getline you're talking about, but taken as a whole, your statement is incorrect across the board. You're mixing up the getline member function provided by std::istream (which uses C-style strings) and the getline function provided for use with std::string in <string>. To summarize, using cin as an object of std::istream:
// getline member function
#include <iostream>
char s[SOME_SIZE];
std::cin.getline ( s, sizeof s );
// getline non-member function
#include <string>
std::string s;
getline ( std::cin, s );
>>your statement is incorrect across the board. You're mixing up the getline member function provided by std::istream (which uses C-style strings) and the getline function provided for use with std::string in <string>.
I didn't mix them up, nor was it incorrect -- I just mentioned them both in the same breath. I didn't say they were interchangeable, and I actually posted sample code that shows the difference, just like you did.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.