I assume by "when I used the cin" you mean with the >>
operator. Reading from an istream
with >>
is a formatted input function which means the input is pre-formatted for you, one of the effects is skipping over whitespace by default.
There are several ways to solve your problem, including reading a single character at a time (using an unformatted input function such as std::istream::get
) or reading a line at a time and parsing the line.
Alternatively, you can turn off skipping of whitespace characters with the noskipws
manipulator:
#include <iostream>
#include <string>
int main()
{
int num;
char c;
std::string str;
if (std::cin >> std::noskipws >> num >> c >> str && c == ' ')
std::cout << "ok" << std::endl;
else
std::cout << "Failed" << std::endl;
}