将字符串的一部分存储在另一个字符串中



问题是,在我的代码中(有一个循环获取字符串的字母),它不能保存当前字符串输入到另一个变量:

代码如下:

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;
    }

有谁能帮忙吗?这里有什么问题吗?

当您声明temp0长度字符串时,使用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);

相关内容

最新更新