@@ -597,7 +597,7 @@ struct Span {
597597 auto restSize = size - start;
598598 if (length > restSize) // 如果长度超过上限,则自动截断
599599 length = restSize;
600- return Span(data + start, restSize + length);
600+ return Span(data + start, length);
601601 }
602602};
603603```
@@ -819,7 +819,7 @@ parseInt("233").value_or(0);
819819
820820parseInt 内部实现可能如下:
821821``` cpp
822- std::optional<int > parseInt (std::string_view sv ) {
822+ std::optional<int > parseInt (std::string_view str ) {
823823 int value;
824824 auto result = std::from_chars(str.data(), str.data() + str.size(), std::ref(value));
825825 if (result.ec == std::errc())
@@ -1666,9 +1666,9 @@ auto modeLut = std::map<OpenMode, std::string>{
16661666
16671667FileHandle file_open(std::filesystem::path path, OpenMode mode) {
16681668#ifdef _ WIN32
1669- return std::shared_ptr<FILE >(_ wfopen(path.wstring().c_str(), modeLut.at(mode)), fclose);
1669+ return std::shared_ptr<FILE >(_ wfopen(path.wstring().c_str(), modeLut.at(mode).c_str() ), fclose);
16701670#else
1671- return std::shared_ptr<FILE >(fopen(path.string().c_str(), modeLut.at(mode)), fclose);
1671+ return std::shared_ptr<FILE >(fopen(path.string().c_str(), modeLut.at(mode).c_str() ), fclose);
16721672#endif
16731673}
16741674
@@ -1682,7 +1682,7 @@ template <class T>
16821682FileResult file_read(FileHandle file, std::span<T > elements) {
16831683 auto n = fread(elements.data(), sizeof(T), elements.size(), file.get());
16841684 return {
1685- .numElements = n == 0 ? n : std::nullopt,
1685+ .numElements = n == 0 ? std::optional(n) : std::nullopt,
16861686 .errorCode = std::errc(ferror(file.get())),
16871687 .isEndOfFile = (bool)feof(file.get()),
16881688 };
0 commit comments