【发布时间】:2020-09-12 01:11:30
【问题描述】:
我正在尝试使用以下方法在 C++ 中交换两个字符串。我将它们作为参数传递,并且在方法本身中它们似乎正确交换。但是,当我在调用 swap 方法后输出字符串时,它们并没有改变。知道为什么吗?非常感谢您的帮助!
void swap(char* stringA, char* stringB){
char temp[100];
for (int i = 0; i < 100; ++i){
temp[i] = stringA[i];
}
stringA = stringB;
stringB = temp;
}
int main() {
char *greeting = "Hello";
char *dismissal = "Good Bye";
swap(greeting, dismissal);
printf("greeting: %s dismissal: %s\n", greeting, dismissal);
return 0;
}
输出:
greeting: Hello dismissal: Good Bye
【问题讨论】:
-
在 C++ 中,只需一个简单的
std::swap(string1, string2);,其中string1和string2是std::string。使用char *(不是字符串,而是指针)的原因是什么?此外,这看起来像C而不是C++。你确定你选择了正确的语言标签吗? -
在 C++ 中使用
std::string。 让自己免于痛苦、痛苦和折磨的无尽噩梦,即 C 字符串。 -
你的代码也有未定义的行为,因为它从数组
greeting(来自main())复制了100个字符,它指向一个只有六个字符的数组的第一个元素。