#include<iostream.h>
#include<string.h>
#include<stack.h>
using namespace std;
void main()
{
Stack ptr;
String str1("Ming_Chi Institue of Technology");
String str2("University of Mississippi");
String str3("University of Kentucky"); ptr.put(str1);
ptr.put(str2);
ptr.put(str3);
while(!ptr.isEmpty())
cout<<ptr.get()<<endl;
}
出现如下错误信息
fatal error C1083: Cannot open include file: 'stack.h': No such file or directory
请问为何?
3x!

解决方案 »

  1.   

    把#include <stack.h>改成#include <stack>
    STL头文件习惯上不带.h后缀
      

  2.   

    可我把。h除去后出现了更多的错误。
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2065: 'Stack' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2146: syntax error : missing ';' before identifier 'ptr'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2065: 'ptr' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(9) : error C2065: 'String' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(9) : error C2146: syntax error : missing ';' before identifier 'str1'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(9) : error C2065: 'str1' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(10) : error C2146: syntax error : missing ';' before identifier 'str2'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(10) : error C2065: 'str2' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(11) : error C2146: syntax error : missing ';' before identifier 'str3'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(11) : error C2065: 'str3' : undeclared identifier
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(12) : error C2228: left of '.put' must have class/struct/union type
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(13) : error C2228: left of '.put' must have class/struct/union type
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(14) : error C2228: left of '.put' must have class/struct/union type
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(15) : error C2228: left of '.isEmpty' must have class/struct/union type
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(15) : fatal error C1903: unable to recover from previous error(s); stopping compilation
    Error executing cl.exe.stack1.exe - 15 error(s), 0 warning(s)请问为何?
      

  3.   

    你看看你的头文件里面是否有stack.h啊!
      

  4.   

    应该是指定的目录里面没有有文件的原因,找一下stack.h放在那里,然后在 控制面板>系统>高级>环境变量>用户变量>INCLUDE 中后面加上该路径,那么改路径就会在编译器的include的搜索范围内,再编译试一下。
      

  5.   

    Stack ptr;
    String str1("Ming_Chi Institue of Technology");
    String str2("University of Mississippi");
    String str3("University of Kentucky");-------------------
    这里不对~
    应该是小写的~
      

  6.   

    还有~
    stack是模板类~
    你的用法好像不对~
    而且他没有put、get、isEmpty这几个成员函数~
    你怎么不用vector?
      

  7.   

    我吧程序改作如下:
    #include<iostream>
    #include<string>
    #include<stack>
     using namespace std;
     void main()
     {
      stack ptr;
    string str1("Ming_Chi Institue of Technology");
             string str2("University of Mississippi");
      string str3("University of Kentucky");
    ptr.put(str1); 
    ptr.put(str2); 
    ptr.put(str3);
      while(!ptr.isEmpty())
    cout<<ptr.get()<<endl;
    }
    出现如下信息:
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2955: 'stack' : use of class template requires template argument list
            c:\program files\microsoft visual studio\vc98\include\stack(52) : see declaration of 'stack'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2133: 'ptr' : unknown size
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2512: 'stack' : no appropriate default constructor available
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(8) : error C2262: 'ptr' : cannot be destroyed
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(12) : error C2662: 'push' : cannot convert 'this' pointer from 'class std::stack' to 'class std::stack<_Ty,_C> &'
            Reason: cannot convert from 'class std::stack' to 'class std::stack<_Ty,_C>'
            Conversion requires a second user-defined-conversion operator or constructor
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(13) : error C2662: 'push' : cannot convert 'this' pointer from 'class std::stack' to 'class std::stack<_Ty,_C> &'
            Reason: cannot convert from 'class std::stack' to 'class std::stack<_Ty,_C>'
            Conversion requires a second user-defined-conversion operator or constructor
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(14) : error C2662: 'push' : cannot convert 'this' pointer from 'class std::stack' to 'class std::stack<_Ty,_C> &'
            Reason: cannot convert from 'class std::stack' to 'class std::stack<_Ty,_C>'
            Conversion requires a second user-defined-conversion operator or constructor
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(15) : error C2039: 'isEmpty' : is not a member of 'stack'
            c:\program files\microsoft visual studio\vc98\include\stack(52) : see declaration of 'stack'
    C:\Program Files\Microsoft Visual Studio\MyProjects\stack1\stack.cpp(15) : fatal error C1903: unable to recover from previous error(s); stopping compilation
    Error executing cl.exe.stack1.exe - 9 error(s), 0 warning(s)好像错误不在于头文件
    还的请教
    多谢!
      

  8.   

    最初的程序段
    是我从一本书上完整的摘录下来的,其编译环境是borland C++和Turbo C++
    我把它放到visualC++中却怎么都不能通过!
      

  9.   

    编译器的毛病~
    VC的编译器的版本太高了~支持STL~
    BC++/TC++支持不够~版本低~
      

  10.   

    我写的一个~
    结果:
    Ming_Chi Institue of Technology
    University of Mississippi
    University of Kentucky
    Press any key to continue-----------------------
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>using namespace std;
    void print_elements(string);void main()
    {
    vector<string> ptr;
    string str1("Ming_Chi Institue of Technology");
    string str2("University of Mississippi");
    string str3("University of Kentucky");

    ptr.push_back(str1);
    ptr.push_back(str2);
    ptr.push_back(str3);
    while(!ptr.empty())
    {
    for_each(ptr.begin(),ptr.end(),print_elements);
    //cout<<ptr.get()<<endl;
    break;
    }
    }void print_elements(string elem)
    {
    cout<<elem<<" "<<endl;
    }
      

  11.   

    第一,你的 stack.h 完全是多余的,可以不包含。
    第二,你的程序用上了MFC,可是你没有设置MFC环境。
    解决方法,用向导生成一个支撑MFC的控制台程序即可。
      

  12.   

    告诫dissect(未名): 
    Borland C 用了一些特殊化的手段,使自己的平台失去了通用性。
    VC的程序都能在Borland C里面编译通过,
    Borland C的程序却大多不能在VC里面编译通过。