std::optional 提供了一种方式来表示可能不存在的值,避免了使用空指针的问题,并提供了更好的类型安全性。
#include <iostream>
#include <fstream>
#include <optional>
#include <string>
std::optional<std::string> GetFileAsStrign()
{
std::ifstream stream("data.txt");
if (stream)
{
std::string res;
//read
getline(stream, res);
stream.close();
return res;
}
return{};
}
int main()
{
std::optional<std::string> data = GetFileAsStrign();
std::string value = data.value_or("Not");//没有读取的默认值Not
std::cout << value << std::endl;
if (data)
{
std::string s = data.value();
std::cout << "file read success:"<<s;
}
else
{
std::cout << "file could not be opended";
}
std::cin.get();
}
//如果文件存在,且文件内容为:DATA
DATA
file read success:DATA
//如果文件不存在
Not
file could not be opended