代码之家  ›  专栏  ›  技术社区  ›  RSSB

显示错误的“std-lib-facilities.h”

  •  2
  • RSSB  · 技术社区  · 6 年前

    我使用的是代码块17.12,并且已经将编译器设置设置为C++ 11标准。我是从Bjarne Stroustrup的书《编程原理和C++实践》中学习的。在他的书中,他要求包括“std-lib-ku-facilities.h”。我从他的网站上复制了它,并保存在“mingw”文件夹的“include”文件夹中。之后,我开始制作一个简单的程序:

    #include<iostream>
    #include "std_lib_facilities.h"
    main()
    {
        std::cout<<"Hello world";
    }
    

    但编译器显示以下错误和警告:

     warning: This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date.  
     Please use a non-deprecated interface with equivalent functionality instead. 
     For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
    
     error: template-id 'do_get<>' for 'String > 
       std::__cxx11::messages<char>::do_get(std::messages_base::catalog, int, int, const String&) const' does not match any template declaration
    
     note: saw 1 'template<>', need 2 for specializing a member function template
    

    显示的错误也在头文件的1971行中。 "locale_facets_nonio.h" .
    我试着在其他论坛上找到这个问题的解决办法,但找不到满意的答案。
    有人说我们不应该使用这个文件 "std_lib_facilities.h" 因为它使用的是不推荐使用的或过时的头文件。

    3 回复  |  直到 6 年前
        1
  •  1
  •   πάντα ῥεῖ    6 年前

    #include std_lib_facilities.h

    #include<iostream>
    #include "std_lib_facilities.h"
    int main() {
        std::cout<<"Hello world";
    }
    

    #include<iostream>
    // #include "std_lib_facilities.h" Remove this entirely!
    int main() {
        std::cout<<"Hello world";
    }
    

    std::string

    #include<iostream>
    #include<string>
    int main() {
        std::string hello = "Hello world";
        std::cout<<hello;
    }
    

    #include std_lib_facilities.h
    Coliru

    #include <iostream>
    #include <vector>
    
    template<typename T>
    std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec)
    {
        for (auto& el : vec)
        {
            os << el << ' ';
        }
        return os;
    }
    
    int main()
    {
        std::vector<std::string> vec = {
            "Hello", "from", "GCC", __VERSION__, "!" 
        };
        std::cout << vec << std::endl;
    }
    

    #include <iostream>
    #include <vector>
    


    Why should I not #include <bits/stdc++.h>?

        2
  •  0
  •   Tanveer Badar    6 年前

    <iostream>