问题是,在我的代码中(有一个循环获取字符串的字母),它不能保存当前字符串输入到另一个变量:
代码如下:
if(isalpha(Str[i])){
while (isalpha(Str[i])){
i++;
}
Str.erase( 0, i);
return 0;
}
我想有另一个字符串(如temp)来保存每个字母到while循环中。像这样:
if(isalpha(Str[i])){
string temp;
while (isalpha(Str[i])){
temp[i]=Str[i];
i++;
}
Str.erase( 0, i);
return 0;
}
有谁能帮忙吗?这里有什么问题吗?
当您声明temp
为0
长度字符串时,使用temp[i]
将是未定义的行为。
你可以使用
来解决这个问题temp.push_back(Str[i]);
代替
temp[i]=Str[i];
您正在传递位置和计数给std::string::erase
。您可以使用相同的形参构造另一个字符串,其中包含即将被擦除的字符。
while (isalpha(Str[i])) {
i++;
}
string temp(Str, 0, i);
Str.erase(0, i);