因此,这会在执行时返回错误,调试器中不会显示错误。
调试断言失败!
表达式:字符串下标超出范围。
有关程序如何解决断言失败的信息,请参阅有关断言的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;
}
答案 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)...
之类的内容。即使您在()和验证之间键入了所需内容,用户也可能无法提供所需数据需要