2012-04-15 2 views
0

Почему я получаю сообщение об ошибке для этой строки?положить строку в условие (C++)

void Student::SetName(const string newName) 
{ 
if(newName!=NULL) //could not deduce template argument for 'const T1 *' from 'int' 
{ 
    ..... 
} 

Любые идеи?

+0

пс также попытались, если (NEWNAME) и получили эту ошибку: – Jjang

+0

условного выражения типа «сопзЬ станд :: string 'является незаконным – Jjang

+0

Если вы за пустой строкой, попробуйте 'if (newName ==" ")' или Bo 'if (! newName.empty()). Нет никакого реального сравнения проверок для строки, которую я знаю хоть. – chris

ответ

2

Возможных решения:

if(!newName.empty()) 

if(newName.size()) // If size = 0 so no caracters in string 

if(newName == "") // Empty string 
1

Это не C#, строка в C++ не является типом NULL. Только указатели на самом деле могут быть NULL, вы не можете определить переменную, не назначая ей базовое значение в C++, за исключением случаев, когда вы используете указатель.

Ваш код должен, вероятно, выглядеть следующим образом:

if(!newName.empty()) 
    .... 
+0

поэтому, если я хочу поместить пустую строку, я делаю newName = newName.empty(); ? – Jjang

+0

@ user1334761 'newName ==" "' или 'newName.empty(). – juanchopanza

+0

'.empty' - булева функция. Он не возвращает строку, возвращает ли она пустое или нет. Также он не меняет содержимое строки (@juanchopanza) –

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