不打印具有int的字符串构造函数

问题描述 投票:-1回答:1
    1. string s6 {0};
    2. string s5 {'a','b',7};
    cout << "S6 ::: " << s6 << endl; 
    cout << "S5 ::: " << s5 << endl;
  1. 期待未定义的行为'nullptr',但会打印一个空字符串。
  2. 打印ab异常行为。

在QT5上运行。 MacO上的编译器叮当声

c++ string constructor initialization initializer-list
1个回答
2
投票

在两种情况下

1. string s6 {0};
2. string s5 {'a','b',7};

使用了接受初始化列表的构造函数。

在第二种情况下,整数文字7可以用char类型表示。因此,没有缩小的转换。

考虑以下程序。

#include <iostream>
#include <string>

int main() 
{
    std::string s6 {0};
    std::string s5 {'a','b',7};

    std::cout << s6.size() << ": ";

    for ( char c : s6 ) std::cout << static_cast<int>( c ) << ' ';
    std::cout << '\n';

    std::cout << s5.size() << ": ";

    for ( char c : s5 ) std::cout << static_cast<int>( c ) << ' ';
    std::cout << '\n';

    return 0;
}

其输出为

1: 0 
3: 97 98 7 
© www.soinside.com 2019 - 2024. All rights reserved.