Запуск следующего MWE, извлеченного из моего проекта для домашних животных и скомпилированного с помощью GCC 4.9.1 (и 4.8.1 также)
#include <iostream>
#include <string>
#include <sstream>
class InputStringStream
{
public:
InputStringStream(const std::string& str) : istringstream(str), currentLine() {}
std::string readLine()
{
std::getline(istringstream, currentLine);
return currentLine;
}
private:
std::istringstream istringstream;
std::string currentLine;
};
int main()
{
std::string s = std::string("line1\nline2\nline3");
InputStringStream stream(s);
std::cout << stream.readLine() + "\n" + stream.readLine() + "\n" + stream.readLine() << std::endl;
return 0;
}
выводит следующий вывод
line3
line2
line1
пока я ожидаю
line1
line2
line3
Что я делаю неправильно?
P.S. Тот же код, составленный с помощью компилятора Apple LLVM версии 5.1, дает то, что я ожидаю. Visual С++ 2012 находится на стороне GCC.