Home  >  Article  >  Backend Development  >  Why is std::stoi not working with MinGW 4.6.1 on Windows?

Why is std::stoi not working with MinGW 4.6.1 on Windows?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 09:29:27686browse

Why is std::stoi not working with MinGW 4.6.1 on Windows?

Compilation Error with std::stoi in MinGW 4.6.1

When attempting to compile a program using std::stoi in MinGW 4.6.1, an error message indicating that 'stoi' is not a member of 'std' may appear. This issue stems from a non-standard declaration of vswprintf on Windows.

Cause of the Issue

The GNU Standard Library defines the macro _GLIBCXX_HAVE_BROKEN_VSWPRINTF on Windows, which disables the conversion functions, including std::stoi. This macro is enabled when using MinGW on Windows due to an issue with vswprintf on that platform.

Resolving the Issue

To resolve this issue, consider the following workaround:

  1. Modify MinGW Header Files (Not Recommended):

    • Remove the !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF) macro on line 2754 of .../lib/gcc/mingw32/4.6.1/include/c /bits/basic_string.h.
    • Add the macro back around lines 2905 to 2965, which reference std::vswprintf.

    This modification will disable the std::to_wstring functions, but other conversion functions should become available.

Additional Information

  • For more details on the issue, refer to the GNU Bugzilla report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37522.
  • This workaround may not be suitable for all users and should be implemented with caution.

The above is the detailed content of Why is std::stoi not working with MinGW 4.6.1 on Windows?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn