首页 > 后端开发 > C++ > C 风格字符串可以作为 C 中的模板参数吗?

C 风格字符串可以作为 C 中的模板参数吗?

Barbara Streisand
发布: 2024-10-30 03:07:29
原创
791 人浏览过

  Can C-Style Strings Be Template Arguments in C  ?

C 风格字符串作为模板参数

在 C 编程领域,您可能遇到过一个困境:尝试使用 C-样式字符串作为模板参数。本文深入探讨了这个问题和潜在的解决方法。

以下代码片段说明了这一尝试:

<code class="cpp">template <char *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

int main() {
    X<"String"> x;
    cout << x.GetString();
}
登录后复制

但是,尽管类定义中没有编译错误,但实例化会产生错误消息。问题在于尝试使用字符串文字作为模板参数,而编译器不支持该参数。

一个简单的解决方案是将字符串文字替换为字符指针:

<code class="cpp">char global_string[] = "String";

template <char const *str>
struct X {
    const char *GetString() const {
        return str;
    }
};

int main() {
    X<global_string> x;
    cout << x.GetString();
}</code>
登录后复制

此代码将成功编译并执行,允许您使用 GetString 方法检索存储的字符串。

请注意,随着 C 11 的出现,现在可以使用字符将字符串文字用作模板参数包。但是,对于支持早期 C 版本的编译器,此处提供的解决方法仍然是一个可行的选择。

以上是C 风格字符串可以作为 C 中的模板参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板