I would like to input a string of indefinite length to a char * variable using cin;
I can do this:
char * tmp = \"My string\";
cout << tmp <
Couple of issues:
char * tmp
cin >> tmp;
tmp is not allocated (it is currently random).
operator>>
(when used with char* or string) reads a single (white space separated) word.
Issue 1:
If you use char*
and allocate a buffer then you may not allocate enough space. The read may read more characters than is available in the buffer. A better idea is to use std::string (from this you can get a C-String).
Issue 2:
There is no way to read indefinite string. But you can read a line at a time using std::getline
.
std::string line;
std::getline(std::cin, line);
char* str = line.data();
Well, you havn't created an object for the char*
to point to.
char* tmp = new char[MAX_LENGTH];
should make it work better (you have to define MAX_LENGTH). Another way to do this is:
std::string strtmp;
cin >> strtmp;
const char* tmp = strtmp.c_str();
This method would mean that you need not use new
.