I\'m just starting with arrays in C++ and I\'m having a problem getting the first character of an array.
This is my code,
1- I enter a name, such as \"Jim\"<
Just remove cin.ignore();
This ignores the first character, thus you miss the 'J'.
Here is signature of cin.ignore:
istream& ignore (streamsize n = 1, int delim = EOF);
So if you call ignore function without any parameters, it will ignore '1' char by default from input. In this case it ignored 'J'. Remove ignore call and you will get 'Jim'.
I had this piece of code with the problem that it was eating the first character after the first cycle (first cycle was ok)
do{
cout << endl << "command:> ";
string cmdStr1="";
cin.ignore();
getline(cin, cmdStr1);
cout << "cin= " << cmdStr1 << endl; //For Debuging
//...more code here
}while(1);
Output was:
command:> pos
cin= pos
command:> pos ... from 2nd loop it started to delete the 1st character
cin= os
...
If "cin.ignore();" was commented then it resulted in a "segmentation fault":
command:> cin=
Segmentation fault
Solution working for me:
To move the "cin.ignore();" line just before the do-while loop.
cin.ignore();
do{
std::cout << endl << "command:> ";
std::string cmdStr1="";
std::getline(std::cin, cmdStr1);
std::cout << "cin= " << cmdStr1 << endl; //For Debuging
//...more code here
}while(1);
Output was:
command:> pos
cin= pos
command:> pos
cin= pos
...
...
P.S. It was incredible hard to put code here... I am disappointment to continue collaborating.