Что делает второй аргумент в std :: string myString {"Hello", "World"}? - PullRequest
1 голос
/ 17 апреля 2020

Здесь впервые для c ++, я искал ответы в Интернете, но ничего не могу найти. Я думаю, что это может иметь какое-то отношение к итераторам, но ссылочный сайт cpp для меня просто esoteri c

1 Ответ

4 голосов
/ 17 апреля 2020

Это вызывает неопределенное поведение. Класс std::string был разработан более 25 лет назад go и имеет некоторые аспекты, которые, вероятно, не вошли бы в сегодняшнюю версию языка.

Это вызывает конструктор, который принимает пару итераторов, которые должны указать начало и конец диапазона для инициализации строки, например:

char foo[] = "abcdefgh";
std::string m{foo+1, foo+4};   // "bcd"

Но в вашем случае указатели не указывают на один и тот же массив, поэтому поведение не определено.

Это конструктор # 6 в https://en.cppreference.com/w/cpp/string/basic_string/basic_string:

template< class InputIt >
constexpr basic_string( InputIt first, InputIt last,
                    const Allocator& alloc = Allocator() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...