in both cases 1 whitespace character is ignored but with 45 kitten the k is also ignored.
I've read the reference documentation for ignore and this is taken from it:
"The extraction ends when n characters have been extracted and discarded or when the character delim is found, whichever comes first. In the latter case, the delim character itself is also extracted."
According to the documentation, the first thing that happens should end the extraction.
with cin.ignore(1,'k'); in my example, the first thing to happen is that 1 whitespace character is extracted. According to the documentation, the 'k' should not be extracted.
I see your point but the two cases are divided by an "or" so if 'k' is found first, it is extracted. Not if n characters are extracted and the next character is the delim character, then the delim character is also extracted.