getline没有为字符串对象赋值

时间:2014-02-08 00:59:10

标签: c++ runtime-error getline

#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不起作用。检查我正在使用的书,调试器没有帮助。有谁知道它有什么问题吗?在调试器中,它表示值:&lt;无法访问&gt;。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

word的作业没有问题。问题是word.at(last)。字符串位置从0运行到length-1(就像数组一样)。由于lastword.length(),因此您尝试访问该范围之外的字符。尝试:

last = word.length()-1;