Validating sudoku columns and rows
It is not a complete answer. Just some of my thoughts about this code.

C++


Do not compare integers of different signedness. Loop counters i and j in function strIsValid are declared as int, but they are compared with N which is unsigned int. It could lead to some problems. Make the counters unsigned.
Use strict compilation flags. The compiler would tell you about your signed/unsigned issue if you pass it -Wall key.

You should always achieve that the compiler will not display any diagnostic messages with the most strict compilation keys (-Wall, -Wextra, -pedantic, etc).

But you probably would not want to use Clang's -Weverything.
What happened with your main? Your main function looks very unnatural:


int main(int, char**)



If you do not need argc and argv, write just

int main()

About std::endl. You should avoid globally using std::endl. It is not the same as just \n. There is a good answer on SO about this topic.

And why are you printing std::endl twice?


std::cout &lt;&lt; sudokuInstance.strIsValid() &lt;&lt; std::endl &lt;&lt; std::endl;


You do not have to explicitly return from main. You don't have to explicitly return 0; at the end of main.


Programming


Minimize the scope of local variables. You should always minimize the scope of local variables. In your case, for example, scope of the readnum variable can be reduced. Some reading about this topic.
The predicative function should return boolean. Your strIsValid is a predicative function. It means that this function checks something and returns either true or false. But you return string "YES" (true) or "NO" (false). You should return bool instead.
What the strIsValid function does? The name of this function doesn't answer the question.


Architecture


Validate user's input. At this time you do not validate user's input in ReadRows. What if I'll input a number which is greater than 9? Or less than 0? If I'll input too many numbers?..

In this case, you store invalid data into m_matrix. Then this invalid data will be used as arguments of std::bitset's flip() which will cause std::out_of_range.
Split row and cols validating and reading user's input. The Sudoku class should know nothing about reading user's input. The only thing that it should do is validate Sudoku columns and rows! This is called the Single Responsibility Principle (SRP).