Я не уверен, какая реализация верна в соответствии со стандартом, но в этом случае кажется, что с GCC std::ostream& operator<<(std::ostream&, const std::string&)
(см. ссылка ) реализован в другом месте, чем в Visual STL Studio, и вводится при включении iostream
, тогда как в Visual Studio вводится только базовая реализация std::string
(реализованная в xstring
).
Вы можете исправить это, добавив
#include <string>
К вашему файлу (смотрите здесь )
Я не могу найти какую-либо информацию о том, является ли правильной реализация базовой функциональности std::string
в xstring
(как VS) и включение в iostream
, и кажется, что на самом деле std::string
не должно быть видимым вообще, если вы включите только iostream
(так как это, кажется, не зависит от него). В этом случае ваш код также не должен работать при использовании std::string
в любом месте.