1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#include <iostream>
#include <sstream>
#include <string>
#include <optional>
using namespace std;
optional<string> nextLine(istream &in)
{
std::optional<std::string> opt;
string line;
if (getline(in, line))
opt = move(line);
cout << "internal: has value: " << opt.has_value() <<
", value = " << *opt << '\n';
return opt;
}
int main()
{
istringstream in{ "hello world\n" };
auto opt = nextLine(in);
cout << "main: has value: " << opt.has_value() <<
", value = " << *opt << '\n';
opt = nextLine(in);
cout << "main: has value: " << opt.has_value() <<
", value = " << *opt << '\n';
}
|