getline не присваивает значение строковому объекту

0
#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main()
{
//YOUR_CODE
string word;

cout << "enter a word: ";
getline(cin, word);
int middle = word.length();
middle = middle/2;
if(middle % 2 == 0)
{
    middle = word.length();
    middle = (middle/2)+1;
    floor (middle);
}
int last = word.length();
cout << word[0] << word.at(middle) << word.at(last);
}

Я не уверен, почему getline не работает. Проверка через книгу, которую я использую, и отладчик не помог. Кто-нибудь знает, что с ним не так? В отладчике он говорит значение: <не доступно>. Любая помощь приветствуется.

  • 0
    Что должен делать floor(middle) , когда вы его нигде не назначаете?
  • 0
    Где находится getvalue в вашей программе?
Показать ещё 10 комментариев
Теги:
runtime-error
getline

1 ответ

1

Нет проблем с назначением word. Проблема заключается в word.at(last). Строковые позиции выполняются от 0 до length-1 (как и массивы). Поскольку last является word.length() вы пытаетесь получить доступ к символу вне этого диапазона. Пытаться:

last = word.length()-1;
  • 0
    Ах, это сработало. Спасибо! Вы знаете, почему это длина () - 1? Видимо, это было в моей книге, но я этого не понял.
  • 1
    Поскольку позиции начинаются с 0. Если слово имеет длину 6 символов, допустимыми являются позиции 0, 1, 2, 3, 4, 5.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню