gpt4 book ai didi

c++ - 如何使用字符串拆分数组?

转载 作者:行者123 更新时间:2023-11-28 05:51:58 24 4
gpt4 key购买 nike

我需要编写一个程序,提示用户输入一个字符串,然后确定字符串的中间位置,并生成一个新的字符串,交换字符串的两半,然后输出结果。

目前为止

int main(void) {

char *string = NULL;
char temp[1000];
cout << "Please enter a string" << endl;
cin.getline(temp, 999);
int length = strlen(temp);
string = new char[length];
strcpy(string,temp);
length = length / 2;

return EXIT_SUCCESS;
}

接收字符串并存储它。我只需要一种将后半部分移动到新数组的方法,我知道我需要使用 strcpy() 但我不知道如何正确引用数组的那部分。

最佳答案

因为这是 C++,所以我将建议一个标准库算法。您要求交换序列的两半和 std::rotate就是这样做的。不幸的是,它就地进行了旋转,而您希望结果在不同的字符串中。

您可以复制字符串然后进行旋转,但是有一个 std::rotate_copy将同时执行这两项操作的算法(并且比单独的复制/旋转步骤更快)。

char 数组示例:

#include <algorithm>
#include <cstring>
#include <iostream>

int main()
{
char text[1000], result[1000];
std::cout << "Please enter a string\n";
std::cin.getline(text, 999);
size_t length = strlen(text);

std::rotate_copy(text, text + length / 2, text + length, result);
result[length] = '\0';

std::cout << text << '\n' << result << '\n';
}

std::string 示例:

#include <algorithm>
#include <iostream>
#include <string>

int main()
{
std::string text, result;
std::cout << "Please enter a string\n";
std::getline(std::cin, text);
size_t length = text.size();

result.resize(length);
std::rotate_copy(text.begin(), text.begin() + length / 2, text.end(), result.begin());

std::cout << text << '\n' << result << '\n';
}

Demo on ideone.com

你可以使用 std::swap_ranges但这假设两个范围大小相同。

关于c++ - 如何使用字符串拆分数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35051420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com