问题是在我的代码中(有一个循环获取字符串的字母),它无法将当前字符串输入保存到另一个变量中:
以下是代码:
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;
}
任何人都可以帮助解决这里的问题吗?
答案 0 :(得分:1)
当您将temp
声明为0
长度字符串时,使用temp[i]
将是未定义的行为。
您可以使用
解决此问题temp.push_back(Str[i]);
而不是
temp[i]=Str[i];
答案 1 :(得分:1)
您将位置和计数传递给std::string::erase
。您可以使用相同的参数构造另一个字符串,其中包含即将被删除的字符。
while (isalpha(Str[i])) {
i++;
}
string temp(Str, 0, i);
Str.erase(0, i);