2013-05-27 4 views
0

Я объявил массив размером 100 string bin[100]; Я хочу, чтобы каждый массив был инициализирован как "". Как инициализировать все из них одной строкой? Я пробовал что-то вроде bin[] = "";, и он не работает. Любая помощь будет оценена по достоинству.Как инициализировать массивы строки типа с одной строкой кода?

По умолчанию Конструктор

RandomString() 
{ 
    input = ""; 
    //bin[] = ""; 
} 

ответ

2

Вам не нужно делать ничего особенного, просто string bin[100]; прекрасно. Конструктор по умолчанию для std::string будет вызываться для каждого элемента массива.

Если массив является членом какого-либо класса, инициализировать его в списке инициализации членов:

struct SomeClass 
{ 
    std::string bin[100]; 
    SomeClass() : bin() // You can initialize arrays with() in the mem-init list 
    { 
    } 
}; 

* Технически, конструктор по умолчанию будет называться даже если вы не добавляете bin() к мем- init, но это хорошая практика (поскольку встроенные типы останутся неинициализированными).

В C++ члены класса инициализируются через списки инициализации. Например, в следующих примерах, есть разница в коде:

// First example 
struct MyClass 
{ 
    int i; 
    SomeClass() : i(1) 
    { 
    } 
}; 

// Second example 
struct MyClass 
{ 
    int i; 
    SomeClass() 
    { 
     i = 1; 
    } 
}; 

В первом примере, i является инициализируется в 1 в списке инициализации. Во втором примере 1 - - - i. Вы могли бы думать о коде выше, как, выполнив следующие действия:

int i = 1; // First example 

int i; // Second example 
i = 1; 

Для встроенного типа, как int не существует большая разница между этими двумя, однако выше разница может быть очень важно в некоторых ситуациях, например а когда член объявляется const:

struct SomeClass 
{ 
    const int i; 
    SomeClass() 
    { 
     i = 1; // Error!! 
    } 
}; 

в приведенном выше примере, сопзИте член должен быть инициализирован в списке инициализации.

+0

Что бы я добавил в свой конструктор классов? Поскольку я объявил 'string bin [100];' в качестве моей функции-члена я бы просто оставил инициализацию пустой в конструкторе класса? – user2419691

+0

Надеюсь, что 'bin' является переменной-членом, а не функцией. Инициализируйте его в списке инициализации члена ctor, например 'MyClass :: MyClass(): bin() {// body of ctor}' –

+0

oops, я хотел сказать переменную-член. И я не совсем понимаю, что вы говорите об инициализации в списке ctor. Как мне это сделать? Я редактировал свое первое сообщение, чтобы указать, как выглядит мой конструктор. – user2419691

0

На вашем пути вы только что инициализировали первый элемент массива, инициализируемый по умолчанию ctor initialize to null string. Вы хотите инициализировать 100 элементов, просто выполните одно и то же для каждого из них.

Смежные вопросы