2014-01-27 3 views
2

Я пытаюсь написать функцию, которая удаляет пробелы из начала и конца строки, и я получаю ошибкуОшибка с помощью SUBSTR

error C3867: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::length': function call missing argument list; 
use '&std::basic_string<char,std::char_traits<char>,std::allocator<char>>::length' to create a pointer to member" 

Вот мой исходный код

string trim(string str) 
{ 
    int i = 0; 
    for (char c : str) 
    { 
     if (!isspace(c)) 
      break; 
     i++; 
    } 

    string trimmed = str.substr(i, (str.length-i)); 

    i = 0; 
    for (char c : str) 
    { 
     if (isspace(c)) 
      break; 
     i++; 
    } 

    trimmed = trimmed.substr(0, i); 
    return trimmed; 
} 

Что не так?

+0

Я бы сказал, что сообщение об ошибке довольно ясно. 'length' не хватает списка аргументов, указывая на то, что это функция. – chris

+0

Согласен с Крисом. @Celeritas Возможно, вы могли бы отправить сообщение * full * в виде кода, чтобы было проще найти это через Google !? –

+0

@Celeritas Возможно, вы уже отправили сообщение об ошибке? На данный момент я не уверен. –

ответ

1

Вместо

string trimmed = str.substr(i, (str.length-i)); 

Использование

string trimmed = str.substr(i, (str.length()-i)); 

length() это функция, а не член. Это происходит по-разному на других языках.

Отметьте, что size() является синонимом length().

+0

Работа 'size' и' length' для 'std :: string'. – chris

+0

@chris Так же, как вы прокомментировали, я снова удалил это различие. Благодаря ! –