Я пытаюсь собрать и сохранить пользовательские метаданные для проекта, но не могу найти способ сохранить длину (количество символов) строки.

int main()
{
 string foo;
 int bar;
 size_t TryEverything;

 cout << "Enter some random text: ";
 getline(cin, foo);

 bar = foo.size(); //Does not work
 bar = foo.length(); //Does not work
 bar = TryEverything.size(); //Does not work
 bar = TryEverything.length(); //Does not work

}

Я хочу, чтобы bar равнялся количеству символов (включая пробелы), которые вводит пользователь. Какие-либо предложения?

В настоящее время я использую Visual Studio 08, и отладчик выдает эту ошибку:

«Выражение: итератор deque не может быть разыменован».

Редактировать:

Ошибка исходила откуда-то еще в коде. Foo действительно должен работать.

1
user3331346 8 Апр 2014 в 07:43

2 ответа

Лучший ответ

В вашем коде TryEverything относится к типу size_t, у него нет таких методов, как size() или length().

Использовать

size_t sz = foo.size();

Или

size_t sz = foo.length();

Смотрите в прямом эфире: http://ideone.com/mHjvob.

1
herohuyongtao 8 Апр 2014 в 03:51

Попробуйте это, у меня это сработало:

#include<iostream>
#include<string>

using namespace std;

int main()
{
    string foo;
    size_t bar;

    cout << "Enter some random text: ";
    getline(cin, foo);

    bar = foo.size(); //Did work

    cout << bar;
}
2
sidrakesh 8 Апр 2014 в 03:49