что здесь означает строковая функция - PullRequest
1 голос
/ 22 января 2020
string ans="";
int x=0,u=1,v=2,y=0;
ans+=string(u-x,'R');
ans+=string(v-y,'U');

Вот что на самом деле хранит строковая функция в ans переменной

Ответы [ 3 ]

4 голосов
/ 22 января 2020
string ans="";

После этой строки ans равно "".

int x=0,u=1,v=2,y=0;
ans+=string(u-x,'R');

string(u-x, 'R') эквивалентно string(1 - 0, 'R'), так что создается строка с 1 копией 'R', а затем добавляет это к ans, так что теперь ans == "R".

string(v-y, 'U') эквивалентно string(2 - 0, 'U'), так что в итоге вы получите "RUU" в качестве окончательного ответа.

2 голосов
/ 22 января 2020

Здесь

ans+=string(u-x,'R');

string(u-x,'R') вызывает конструктор std::string:

basic_string( size_type count,    
              CharT ch,
              const Allocator& alloc = Allocator() );

Создает строку с количеством копий символ ch.

Далее, есть operator+=, который добавляет одну строку к другой.

Собирая все вместе и немного упрощая код, мы получаем

std::string ans;                    // ans == ""
auto countR = 1;
auto countU = 2;
ans += std::string(countR,'R');     // ans += "R"  -> ans == "R"
ans += std::string(countU,'U');     // ans += "UU" -> ans == "RUU"
0 голосов
/ 22 января 2020

RUU.

Один из конструкторов строки принимает два аргумента string (size_t n, char c); которые создают экземпляр строки с n раз c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...