我在尝试编译时遇到此错误:
“在抛出'
std::out_of_range
'的实例后终止调用what()
:basic_string::at
此应用程序已请求运行时 以不寻常的方式终止它。“
我的猜测是它与程序中的word.at()部分有关,但我似乎无法弄清楚具体原因。
string Recursive4(const string word)
{
string D;
int num = word.length();
D.reserve(word.size());
D += word.at(num);
num--;
if (word.at(0))
return D;
else
return Recursive4(word);
}
int main()
{
cout << Recursive4("Loyce") << endl;
}
答案 0 :(得分:0)
string
使用零索引,因此最大元素索引为size-1
。您可以按如下方式更改代码:
string Recursive4(const string word)
{
string D;
int num = word.length() - 1;
D.reserve(word.size());
D += word.at(num);
num--;
if (word.at(0))
return D;
else
return Recursive4(word);
}
编辑:正如用户657267指出的那样,string
确实会返回对null
字符的引用,如果您使用operator[]
来获取索引为size
的元素。