在std :: string中找到最后一个字符错误:表达式:字符串下标超出范围

时间:2013-06-03 15:28:04

标签: c++

因此,这会在执行时返回错误,调试器中不会显示错误。

调试断言失败!

表达式:字符串下标超出范围。

有关程序如何解决断言失败的信息,请参阅有关断言的visual c ++文档。

int main()
{
// declaring variables
string input = "";
int firstChar;

// process:
cout << "Please enter a valid sentence (with spaces):\n>";
getline(cin, input);

cout << "first char is " + input[0] << endl << endl;
firstChar = input.length();
cout << "last char is " + input[firstChar];

// stop and return success
getchar();
return 0;
}

3 个答案:

答案 0 :(得分:5)

长度为length的C ++字符串从0索引到length - 1

答案 1 :(得分:1)

input[firstChar]尝试访问字符一次通过字符数组input的结尾,因为数组由[0, length)索引。

最后一个字符实际上是input[firstChar - 1]

只需一点提示,请使用流插入运算符<<代替+,因为后者会生成临时std::string对象。

答案 2 :(得分:0)

您应该在使用之前测试input中的有效内容。if(length(input)>0)...之类的内容。即使您在()和验证之间键入了所需内容,用户也可能无法提供所需数据需要