Какой из них лучше и предпочтительнее?Я действительно нахожу API чтения непонятным.
Членская версия читается как char*, бесплатная версия читается как std::string. Так что предпочитайте бесплатную версию! Используйте это так:
char*
std::string
std::istream & ins = /* ... */; std::string line; while (std::getline(ins, line)) { // process line }