交换字符串数组中的字符串

Swapping strings in a string array

本文关键字:字符串 数组 交换      更新时间:2023-10-16

不确定我做得对不对。但是我正在尝试显示输出cat the sideways ran而不是the cat ran sideways

#include <string>
#include <iostream>
using namespace std;
void doSwap(string string1, string string2);
int main() {
    string theArray[5] = {"the", "cat", "ran", "sideways"};
    int i;
    for (i = 0; i < 4; i++) {
        doSwap(theArray[i], theArray[i+1]);
        cout << theArray[i] << " ";
    }
}
void doSwap (string string1, string string2) {
    string temp;
    temp = string1;
    string1 = string2;
    string2 = temp;
}

不确定我做得是否正确。

您应该通过引用传递字符串,因为您正在更改它们。按照编写代码的方式,您发送的是要交换的字符串的临时副本,实际上是交换副本,但不是在数组中交换副本。更新代码:

#include <string>
#include <iostream>
using namespace std;
void doSwap(string string1, string string2);
int main() {
    string theArray[] = {"the", "cat", "ran", "sideways"};
    int i;
    for (i = 0; i < (sizeof theArray)/sizeof(string); i++) {
        doSwap(theArray[i], theArray[i+1]);
        cout << theArray[i] << " ";
    }
}
void doSwap (string &string1, string &string2) {
    string temp;
    temp = string1;
    string1 = string2;
    string2 = temp;
}

使用<algorithm>库:可以很容易地完成任务

int main()
{
    vector<string> vec { "the", "cat", "ran", "sideways" };
    swap_ranges(begin(vec), begin(vec)+1, begin(vec)+1);
    swap_ranges(begin(vec)+2, begin(vec)+3, begin(vec)+3);
}

你不需要给自己制造麻烦。

试试这个代码,它会很简单:

#include <string>
#include <iostream>
using namespace std;
void doSwap (int first, int last);
string theArray[5] = {"the", "cat", "ran", "sideways"};
int main() {
    int i;
    for (i = 2; i <=4; i += 2) {
        doSwap((i-2),(i-1));
    }
    for(i=0;i<5;i++)
        cout << theArray[i] << " ";
}
void doSwap (int first, int last){
    string tmp;
    tmp = theArray[first];
    theArray[first] = theArray[last];
    theArray[last] = tmp;
}