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

将C字符串推到模板堆栈上

  •  1
  • Johnrad  · 技术社区  · 15 年前

    我相信对大多数人来说这是一个很容易的问题。但是我正在用c++为XML编写一个标记重新编码器,并且使用一个堆栈来确保有匹配的开始和结束标记。我的标签是c字符串。。。

    char BeginTag[MAX];
    

    我正试图把它推到我的模板堆栈上。但我不确定传递堆栈的类型。我试过。。。

    stack<char> TagStack;
    

    但那不管用。我也尝试过其他一些解决方案,但似乎都不起作用。有人能帮我吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Steve Jessop    15 年前

    数组不可赋值,因此不能用作容器值类型。

    包含 一个数组,使用它:

    struct Tag {
        char name[MAX];
    };
    
    stack<Tag> TagStack;
    

    或者用一个 std::string

        2
  •  1
  •   Dan Breslau    15 年前

    如果你发布了不起作用的代码,并告诉我们它是如何不起作用的,那会有帮助的。(编译时错误?运行时错误?)但我的建议是使用std::string,至少在堆栈上是这样:

    using namespace std;
    stack<string> TagStack;
    

    您应该能够在不使用explict cast的情况下推到堆栈上:

    TagStack.push(BeginTag);
    

    推荐文章