2015-12-10 8 views
1

Я кодировал в Borland C++ много лет назад, и теперь я пытаюсь понять «новый» (мне) C + 11 (я знаю, мы в 2015 году, есть c + 14 ... но я работаю над проектом C++ 11)std :: string :: assign vs std :: string :: operator =

Теперь у меня есть несколько способов присвоить значение строке.

#include <iostream> 
#include <string> 
int main() 
{ 
    std::string test1; 
    std::string test2; 
    test1 = "Hello World"; 
    test2.assign("Hello again"); 

    std::cout << test1 << std::endl << test2; 
    return 0; 
} 

Они оба работают. Я узнал от http://www.cplusplus.com/reference/string/string/assign/, что есть другие способы использования assign. Но для простого назначения строк, какой из них лучше? Я должен заполнить более 100 структур с 8-строчной строкой каждый, и я ищу самый быстрый механизм (я не забочусь о памяти, если нет большой разницы)

ответ

3

Оба одинаково быстро, но = "..." яснее.

Если вы действительно хотите быстро, хотя, использовать assign и указать размер:

test2.assign("Hello again", sizeof("Hello again")); 
// or 
test2.assign("Hello again", 12); 

Таким образом, только один распределение необходимо. (Вы также могли бы .reserve() достаточно памяти заранее, чтобы получить тот же эффект.)