ESP8266:C++ standard library <string> and <utility> cannot find

bulid error:

fatal error: string: No such file or directory
    8 | #include <string>
      |          ^~~~~~~~
#ifndef ASTRA_CORE_SRC_HAL_HAL_H_
#define ASTRA_CORE_SRC_HAL_HAL_H_

#include <string>
#include <utility>
#include <vector>

But my vscode can find the path of (C:\Users\shdm.platformio\packages\toolchain-xtensa\xtensa-lx106-elf\include\c++\10.3.0\string)

I try to use <string.h>, But it doesn’t work.

My file is:ini

[env:nodemcuv2]

platform = espressif8266

board = nodemcuv2

framework = arduino

Not reproducable.

Post the full source code / project files.

I put them on github:
shdmfire/u8g2_hal: Based on the u8g2 library (github.com)

I want to transplant this project into esp8266
AstraThreshold/oled-ui-astra: A smooth, easy-to-deploy, and easy-to-extend OLED UI framework, based on C++. (github.com)

You can’t use C++ classes / structures inside .c code.

Oh! My problem :fearful:
Thanks :heart: