Re: Копирование строк
От: Кодт Россия  
Дата: 12.02.07 13:29
Оценка: 1 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Добрый день.

А>Есть строка
А>std::string str = "asldjaslkdjas";
А>std::string str1;
А>надо скопироваь в str1 первые 3 символа

Конструируй:
std::string str1(str.begin(), str.begin()+3);
std::string str2(str, 0, 3);
std::string str3(str.c_str(), 3);

// или присваивай
str1 = std::string(str.begin(), str.begin()+3);
str1 = std::string(str, 0, 3);
str1 = std::string(str.c_str(), 3);
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Копирование строк
От: Аноним  
Дата: 12.02.07 11:38
Оценка:
Добрый день.
Есть строка
std::string str = "asldjaslkdjas";
std::string str1;
надо скопироваь в str1 первые 3 символа
Re: Копирование строк
От: Murom Россия  
Дата: 12.02.07 11:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.

А>Есть строка
А>std::string str = "asldjaslkdjas";
А>std::string str1;
А>надо скопироваь в str1 первые 3 символа


str1 = str.substr(0, 3);
- Eugeny
Re: Копирование строк
От: Zigmar Израиль  
Дата: 12.02.07 12:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.

А>Есть строка
А>std::string str = "asldjaslkdjas";
А>std::string str1;
А>надо скопироваь в str1 первые 3 символа

std::string str = "asldjaslkdjas";
std::string str1;
std::copy(str.begin(),str.begin()+3,std::back_inserter(str1));


Если есть расширения, можно и так, хотя лучше пользоваться стандартными средствами, тем более что copy_n не даёт ничего, кроме нескольких сэкономленных символов кода
__gnu_cxx::copy_n(str.begin(),3,std::back_inserter(str1));
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Re[2]: Копирование строк
От: Аноним  
Дата: 12.02.07 12:27
Оценка:
Здравствуйте, Zigmar, Вы писали:

А>>надо скопироваь в str1 первые 3 символа

Z>
Z>std::string str = "a";// я слегка изменил Ваш пример. Ой, что произойдет :shuffle: 
Z>std::string str1;
Z>std::copy(str.begin(),str.begin()+3,std::back_inserter(str1));
Z>
Re[3]: Копирование строк
От: Zigmar Израиль  
Дата: 12.02.07 12:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Zigmar, Вы писали:


А>>>надо скопироваь в str1 первые 3 символа

Z>>
Z>>std::string str = "a";// я слегка изменил Ваш пример. Ой, что произойдет :shuffle: 
Z>>std::string str1;
Z>>std::copy(str.begin(),str.begin()+3,std::back_inserter(str1));
Z>>

Согласен.
Можно например так:
std::copy(str.begin(),str.begin()+std::max(3,str.size()),std::back_inserter(str1));
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Re[4]: Копирование строк
От: Centaur Россия  
Дата: 13.02.07 06:28
Оценка:
Здравствуйте, Zigmar, Вы писали:

А>>>>надо скопироваь в str1 первые 3 символа

Z>>>
Z>>>std::string str = "a";// я слегка изменил Ваш пример. Ой, что произойдет :shuffle: 
Z>>>std::string str1;
Z>>>std::copy(str.begin(),str.begin()+3,std::back_inserter(str1));
Z>>>

Z>Согласен.
Z>Можно например так:
Z>
std::copy(str.begin(),str.begin()+std::max(3,str.size()),std::back_inserter(str1));


Ничего не изменилось. max(3, string("a").size()) по-прежнему равен 3. Здесь нужно брать min.
Re[5]: Копирование строк
От: Zigmar Израиль  
Дата: 13.02.07 08:37
Оценка:
Здравствуйте, Centaur, Вы писали:

C>Здравствуйте, Zigmar, Вы писали:


А>>>>>надо скопироваь в str1 первые 3 символа

Z>>>>
Z>>>>std::string str = "a";// я слегка изменил Ваш пример. Ой, что произойдет :shuffle: 
Z>>>>std::string str1;
Z>>>>std::copy(str.begin(),str.begin()+3,std::back_inserter(str1));
Z>>>>

Z>>Согласен.
Z>>Можно например так:
Z>>
std::copy(str.begin(),str.begin()+std::max(3,str.size()),std::back_inserter(str1));


C>Ничего не изменилось. max(3, string("a").size()) по-прежнему равен 3. Здесь нужно брать min.

Глюк. Конечно имелось ввиду min.
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Re[2]: Копирование строк
От: alion  
Дата: 13.02.07 11:20
Оценка:
Здравствуйте, Кодт, Вы писали:

К>// или присваивай

К>str1 = std::string(str.begin(), str.begin()+3);
К>str1 = std::string(str, 0, 3);
К>str1 = std::string(str.c_str(), 3);
К>[/c]

Насколько помню из Страуструпа, в этом случае будет создаваться новый объект, а потом уже копироваться в str1
Re[3]: Копирование строк
От: Кодт Россия  
Дата: 13.02.07 12:15
Оценка:
Здравствуйте, alion, Вы писали:

К>>// или присваивай


A>Насколько помню из Страуструпа, в этом случае будет создаваться новый объект, а потом уже копироваться в str1


Естественно. Поэтому и предлагаю сразу конструировать str1 с нужными аргументами.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Копирование строк
От: sraider http://dvinogradov.blogspot.com
Дата: 19.02.07 06:53
Оценка:
А>Добрый день.
А>Есть строка
А>std::string str = "asldjaslkdjas";
А>std::string str1;
А>надо скопироваь в str1 первые 3 символа

str1.assign(str, 0, 3);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.