Так, у меня есть вектор
std::vector<std::string> lines.
Я заполняю этот вектор и могу получить доступ к нему как
std::string temp = lines[0];
Однако в непосредственном окне, обоих
lines[0] - error:overloaded operator not found
и
lines.at(0) - error:symbol is ambiguous
не работайте вообще. Есть ли прием к использованию непосредственного окна с C++. Я главным образом происхожу из среды C#, где все работает приятно (и у меня есть intellisense в Непосредственном Окне). Я не ожидал, что C++ будет большим, но я полагал, что он будет работать на вещи помимо ints. Кто-либо может сказать мне, что я делаю неправильно?Спасибо.
Править: Я должен быть ясным, ничто действительно не работает в непосредственном окне, это - просто упрощенный пример
Править: Я нахожусь в режиме отладки
Окна непосредственного наблюдения и наблюдения не поддерживают перегруженных операторов. Там есть некоторая поддержка печати стандартных контейнеров в целом разумным способом (см., например, http://www.virtualdub.org/blog/pivot/entry.php?id=120), но это не распространяется на возможность использования на них оператора оператора[]
.
Надеюсь, что это будет улучшено в последующих редакциях отладчика, но пока, чтобы посмотреть на i-й элемент вектора, попробуйте строки._Myfirst[i]
.
(_Myfirst
, в стандартных библиотеках, которые поставляются с VC++, случайно оказывается переменной-членом в std::vector
, которая указывает на первый элемент последовательности. Таким образом, это просто рассмотрение вектора, как если бы это был любой другой объект. Чтобы разобраться в этом, пришлось посмотреть на заголовки... не очень удобно, но надеюсь, что это вам поможет. Наверное, можно сделать что-то похожее с другими контейнерами, но для того, чтобы разобраться, как...
(Кстати, если вы работали на C#, то отладчик C++, наверное, покажется для сравнения чуть менее скользким в целом, и это только один из примеров. У меня сложилось впечатление, что в сторону CLR было вложено гораздо больше работы)
.