【问题标题】:Pointer to string constants [duplicate]指向字符串常量的指针[重复]
【发布时间】:2019-07-13 05:39:14
【问题描述】:

根据定义

char *str = "ankit"

这里str是一个指向char的指针。

当我们做类似的事情时

cout<< str;

然后它正在打印 ankit。为什么不是存储ankit的地址,因为str是一个指针所以它必须是一个地址

我尝试打印*str,结果是“a”;我可以理解,但我无法理解为什么打印 str 不是给出指针而是给出字符串值。

char * str = "ankit";
cout<< str;

输出:ankit

【问题讨论】:

标签: c++ string pointers char


【解决方案1】:

ostream 对 char *T * 有不同的重载(对于模板类型 T)。

来自&lt;ostream&gt; 头文件:

template <class _Traits>
inline basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>& _Ostr,
    const char* _Val) { // insert NTBS into char stream
template <class _Ostr, class _Ty,
    enable_if_t<conjunction_v< // prevent infinite recursion
                    negation<is_lvalue_reference<_Ostr>>, is_base_of<ios_base, _Ostr>, _Can_stream_out<_Ostr, _Ty>>,
        int> = 0>
inline _Ostr&& operator<<(_Ostr&& _Os, const _Ty& _Val) { // insert to rvalue stream

如果给出已知的 C 字符串,则将使用接受 char * 参数的函数。

如果不可用,则使用其他接受任意指针值的函数。

还有一个接受void *指针的方法。

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2014-02-23
    • 2015-06-22
    • 1970-01-01
    • 2013-08-02
    • 2016-12-30
    • 1970-01-01
    • 2010-10-15
    • 2023-04-07
    相关资源
    最近更新 更多