0

So, this returns an error on execution, no errors shown in the debugger.

Debug assertion failed!

Expression: String subscript out of range.

For information on how your program can couse an assertion failure, see the visual c++ documentation on asserts.

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;
}
4

3 回答 3

5

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

于 2013-06-03T15:29:30.673 回答
1

input[firstChar]正试图通过字符数组的结尾来访问字节,input因为数组的索引是[0, length).

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

只是一个小提示,使用流插入运算符<<而不是+因为后者会产生一个临时std::string对象。

于 2013-06-03T15:32:52.510 回答
0

您应该input在使用之前测试您的内容是否有效。类似 .The的东西if(length(input)>0)...即使您在 () 和需要验证之间键入了您需要的内容,用户也可能不会提供想要的数据

于 2013-06-03T15:45:06.080 回答