#include <sstream> using namespace std; int main() { cout << "hi"; // error: undeclared cout }
Из того, что я прочитал, класс sstream является производным от класса iostream, но почему он не включается автоматически?
Классы на основе iostream не совпадают с заголовком iostream. Стандартные заголовки не должны включать друг друга или могут включать друг друга в любом порядке. Если вы хотите использовать содержимое <iostream>, вы должны #include <iostream>.
iostream
<iostream>
#include <iostream>
std::sstream является производным от std::istream и std::ostream. Это означает, что вам не нужно включать <istream> или <ostream>. Однако std::cout не определено ни в одном из этих двух заголовков. Вот почему вам нужен еще один заголовок, <iostream>.
std::sstream
std::istream
std::ostream
<istream>
<ostream>
std::cout