为什么下面的代码会提示string subscript out of range
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
void Toupper(string &str);
string s;
cout<<"Enter a string(q to quit):";
getline(cin,s);
while(s!="q")
{
Toupper(s);
cout<<"Next string(q to quit):";
getline(cin,s);
}
cout<<"Bye.";
}
void Toupper(string &str)
{
int i=0;
while(str[i]!='\0')
{
toupper(str[i]);
i++;
}
}