当我尝试传递包含getline()语句内容的字符串时,我遇到了一些问题,试图理解为什么我会在本节中抛出异常。
`reference operator[](const size_type _Off)
{ // subscript mutable sequence
auto& _My_data = this->_Get_data();
_IDL_VERIFY(_Off <= _My_data._Mysize, "string subscript out of range");
return (_My_data._Myptr()[_Off]);
}`
void set_token(string n);
string token;
while (fin.peek() != '0' && !fin.eof())
{
getline(fin, token);
set_token(token);
}
`void set_token(string n)
{
string strarray[20];
string token;
int size = sizeof(n);
int i = 0;
int j = 0;
while (i < size)
{
if (n[i] != ' ' && n[i] != '\0')
{
token += n[i];
}
else
{
strarray[j] = token;
j++;
token.clear();
lexical(strarray[j]);
}
i++;
}`
答案 0 :(得分:1)
我在getline()中没有看到任何问题,但是在set_token()中,当你提取n的大小时,会出现明显的运行时问题。 sizeof不会给出字符串中的字符总数,但size()会这样。
试试这个: size = n.size():