C++ 在字符串数组中交换字符串

C++ 在字符串数组中交换字符串,c++,C++,不知道我做得对不对。但是我试图显示输出cat横向运行,而不是cat横向运行 #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

不知道我做得对不对。但是我试图显示输出
cat横向运行
,而不是
cat横向运行

#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;
}
#包括
#包括
使用名称空间std;
void doSwap(字符串string1、字符串string2);
int main(){
字符串数组[5]={“the”,“cat”,“ran”,“sideways”};
int i;
对于(i=0;i<4;i++){
doSwap(阵列[i],阵列[i+1]);

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

#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;
}
#包括
#包括
使用名称空间std;
void doSwap(字符串string1、字符串string2);
int main(){
字符串数组[]={“the”,“cat”,“ran”,“sideways”};
int i;
对于(i=0;i<(数组大小)/sizeof(字符串);i++){
doSwap(阵列[i],阵列[i+1]);

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

#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;
}
#包括
#包括
使用名称空间std;
void doSwap(字符串string1、字符串string2);
int main(){
字符串数组[]={“the”,“cat”,“ran”,“sideways”};
int i;
对于(i=0;i<(数组大小)/sizeof(字符串);i++){
doSwap(阵列[i],阵列[i+1]);

您可以使用
库轻松完成任务:

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);
}
intmain()
{
向量向量{“the”,“cat”,“ran”,“sideways”};
交换_范围(开始(vec)、开始(vec)+1、开始(vec)+1);
交换_范围(开始(vec)+2、开始(vec)+3、开始(vec)+3);
}

您不需要给自己制造困难。

您可以使用
库轻松完成任务:

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);
}
intmain()
{
向量向量{“the”,“cat”,“ran”,“sideways”};
交换_范围(开始(vec)、开始(vec)+1、开始(vec)+1);
交换_范围(开始(vec)+2、开始(vec)+3、开始(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;
}
#包括
#包括
使用名称空间std;
void doSwap(int first,int last);
字符串数组[5]={“the”,“cat”,“ran”,“sideways”};
int main(){
int i;

对于(i=2;i尝试此代码,这将很简单:

#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;
}
#包括
#包括
使用名称空间std;
void doSwap(int first,int last);
字符串数组[5]={“the”,“cat”,“ran”,“sideways”};
int main(){
int i;

对于(i=2;我通过引用而不是值将参数传递给函数。通过引用而不是值将参数传递给函数。