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

时间:2015-10-03 19:47:56

标签: c++ string

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

以下是代码:

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

任何人都可以帮助解决这里的问题吗?

2 个答案:

答案 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);