2012-05-01 3 views
0

Моя структура выглядит следующим образом:Как применить значение к строковой переменной внутри структуры?

struct Candidate { 
    float pertotal, voteper; 
    string name; 
    int voten, votem, votese, votesw, total; 
}; 

и мне нужно присвоить нулевое значение имени. Я пробовал:

struct Candidate { 
    float pertotal, voteper; 
    string name = 0; 
    int voten, votem, votese, votesw, total; 
}; 

и

struct Candidate { 
    float pertotal, voteper; 
    string name = ""; 
    int voten, votem, votese, votesw, total; 
}; 

но это, кажется, не нравится .. Идеи?

+0

Ответ на вопрос «тип не экземпляр» является правильным, но также стоит указать, что std :: string - это объект, а не указатель, поэтому вы не можете установить его в NULL, только для значения, такого как «" , – Benj

+1

Обратите внимание, что последнее решение отлично работает с C++ 11 (вам понадобится современный компилятор, например GCC 4.7). – Morwenn

ответ

2

std::string по умолчанию сконфигурирован как пустой, поэтому вам не нужно ничего делать.

Если вам нужно положить что-то в него (когда объект этого класса создан), вам нужен конструктор.

Если вы уже создали экземпляр:

Candidate c; 

И вы хотите установить строку обратно в пустую строку, просто присвоить ему:

c.name = ""; 
+0

Я вроде хочу сбросить его. Я проверяю, является ли строка буквой, если она не вызывает ошибку. Когда введено правильное значение, код продолжается. Но когда я вызываю строку имени, она по-прежнему имеет числовое значение внутри нее. – blanksby

+1

@blanksby oh, если вы хотите _reset_ это пустую строку, просто назначьте ей: 'Кандидат c;/* do stuff */c.name = ""; ' –

+0

Или' c.clear(); '... –

4

Candidate является типа, а не пример.

Вы можете сделать это, однако:

Candidate cand; 

cand.name = ""; 

В качестве альтернативы, вы можете написать конструктор:

struct Candidate { 
    Candidate() : name("") {} 

    ... 
}; 

Однако, вам не нужно делать либо из них в этом случае, так как конструктор по умолчанию std::string приводит к пустой строке.

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