c++输入一个字串数组,并从m开始到n个字符,复制到另一个字符数组中
时间: 2024-10-28 10:06:54 浏览: 21
求两个字符串的最长公共字串。
4星 · 用户满意度95%
在 C++ 中,你可以通过 `std::string` 的 `substr()` 函数以及简单的循环结构来实现这个功能。假设我们有一个 `std::string` 数组 `strArray` 和两个整数变量 `m` 和 `n`,你可以这样做:
```cpp
#include <iostream>
#include <string>
// 假设 strArray 已经初始化
std::string strArray[] = {"Hello", "World", "C++", "Programming"};
const int arrSize = sizeof(strArray) / sizeof(strArray[0]);
void copySubstringToArray(const std::string(&arr)[], int m, int n, char* destArray, int destCapacity) {
// 检查目标数组是否有足够的空间存放结果
if (n - m > destCapacity) {
std::cout << "目标数组容量不足!" << std::endl;
return;
}
// 遍历源字符串数组,从第m个字符开始,长度为n-m
for (int i = 0; i < arrSize && i + m < n; ++i) {
// 使用 substr() 获取子串并复制到 destArray
std::copy(arr[i].substr(m, n - m).begin(), arr[i].substr(m, n - m).end(), destArray);
destArray += n - m; // 更新 destArray 的位置
}
}
int main() {
char destinationArray[100]; // 假设目标数组大小足够
int startCopy = 5; // 字符串内的起始位置 m
int lengthToCopy = 4; // 要复制的字符数 n
copySubstringToArray(strArray, startCopy, startCopy + lengthToCopy, destinationArray, sizeof(destinationArray));
std::cout << "复制后的字符串数组: ";
for (char ch : destinationArray) {
std::cout << ch;
}
std::cout << std::endl;
阅读全文