删除字符并将它们附加到字符串的末尾(C ++)

时间:2016-12-13 12:30:20

标签: c++

如何删除给定字符串中的前N个字符并将其追加到最后。例如,如果我们有

abracadabra 

我们将前4个字符移到最后然后我们应该

cadabraabra

4 个答案:

答案 0 :(得分:5)

不是从前面掏出昂贵的东西,而是另一种方式。我们可以rotate到位,这是一个单独的O(N)操作。在这种情况下,您想要向左旋转,以便我们使用

std::string text = "abracadabra";
std::rotate(text.begin(), text.begin() + N, text.end());

在上面的示例中,如果N为4,那么您将获得

cadabraabra

Live Example

答案 1 :(得分:1)

你可以尝试一个老式的双循环,一次一个字符。

#include "string.h"
#include "stdio.h"

int main() {
    char ex_string[] = "abracadabra";
    int pos = 4;
    char a;
    int i, j;

    size_t length = strlen(ex_string);
    for (j = 0; j < pos; j++) {
        a = ex_string[0];
        for (i = 0; i < length - 1; i++) {
            ex_string[i] = ex_string[i + 1];
        }
        ex_string[length-1]=a;

    }
    printf("%s", ex_string);


}

答案 2 :(得分:0)

string str = "abracadabra" //lets say
int n;
cin>>n;
string temp;
str.cpy(temp,0,n-1);
str.earse(str.begin(),str.begin()+n-1);
str+=temp;

参考

string::erase
string::copy

答案 3 :(得分:0)

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string str;
    cin >> str;
    int number;
    cin >> number;

    string erasedString = str;
    string remainingString = str.substr(number + 1, strlen(str));

    erasedString.erase(0, number);

    return 0;
}