首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将字符串中的单词提取到动态2D char数组中

的方法如下:

  1. 首先,定义一个函数,接受一个字符串作为参数,并返回一个动态2D char数组。
  2. 在函数内部,首先计算字符串中单词的个数。可以通过遍历字符串的每个字符,当遇到空格或者字符串结尾时,判断前一个字符是否为字母或数字,如果是,则单词个数加一。
  3. 根据单词个数,动态分配一个二维字符数组,大小为[单词个数][最长单词长度+1]。最长单词长度可以通过遍历字符串找到最长的单词长度。
  4. 再次遍历字符串,将每个单词逐个复制到动态数组中。可以使用两个指针,一个指向单词的起始位置,一个指向单词的结束位置。将单词复制到动态数组中后,将结束位置指针后移,继续寻找下一个单词。
  5. 最后,返回动态数组作为结果。

以下是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <cstring>

char** extractWords(const char* str) {
    int wordCount = 0;
    int maxLength = 0;
    int length = strlen(str);

    // 计算单词个数和最长单词长度
    for (int i = 0; i < length; i++) {
        if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
            int wordLength = 0;
            while ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
                wordLength++;
                i++;
            }
            if (wordLength > maxLength) {
                maxLength = wordLength;
            }
            wordCount++;
        }
    }

    // 分配动态数组
    char** words = new char*[wordCount];
    for (int i = 0; i < wordCount; i++) {
        words[i] = new char[maxLength + 1];
    }

    // 复制单词到动态数组
    int wordIndex = 0;
    for (int i = 0; i < length; i++) {
        if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
            int wordLength = 0;
            int startIndex = i;
            while ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
                wordLength++;
                i++;
            }
            strncpy(words[wordIndex], &str[startIndex], wordLength);
            words[wordIndex][wordLength] = '\0';
            wordIndex++;
        }
    }

    return words;
}

int main() {
    const char* str = "Hello, world! This is a test string.";
    char** words = extractWords(str);

    // 打印提取的单词
    for (int i = 0; words[i] != nullptr; i++) {
        std::cout << words[i] << std::endl;
    }

    // 释放动态数组内存
    for (int i = 0; words[i] != nullptr; i++) {
        delete[] words[i];
    }
    delete[] words;

    return 0;
}

这段代码将字符串中的单词提取到动态2D char数组中,并打印出提取的单词。你可以根据需要修改代码,适应不同的场景和要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券