📌  相关文章
📜  程序在C ++中反转给定字符串中的单词(1)

📅  最后修改于: 2023-12-03 14:56:36.042000             🧑  作者: Mango

程序在 C++ 中反转给定字符串中的单词

本文将介绍如何在 C++ 中编写程序来反转给定字符串中的单词。我们将使用以下步骤来实现此功能:

  • 将字符串拆分为单词
  • 反转单词
  • 重新组合字符串
拆分字符串为单词

我们将使用 C++ 标准库中的 istringstream 类来将字符串拆分为单词。 istringstream 可以将字符串解析为单词或其他类型的数据,并允许我们以类似于 cin 的方式读取其数据。

以下是将字符串拆分为单词的示例代码:

#include <sstream>
#include <vector>
#include <string>

std::vector<std::string> splitString(std::string str) {
    std::istringstream iss(str);
    std::vector<std::string> words;
    std::string word;
    while (iss >> word) {
        words.push_back(word);
    }
    return words;
}

该函数将返回一个 std::vector 对象,该对象包含一系列从字符串中提取的单词。现在我们需要编写代码来反转这些单词。

反转单词

我们将编写一个简单的函数来反转字符串中的单词。该函数将接受一个字符串作为参数,并返回其反转版本。

以下是反转单词的示例代码:

std::string reverseWord(std::string word) {
    int left = 0;
    int right = word.length() - 1;

    while (left < right) {
        std::swap(word[left], word[right]);
        left++;
        right--;
    }

    return word;
}

该函数将返回一个字符串,该字符串是给定字符串的反转版本。现在我们已经可以拆分字符串并反转其单词,我们需要将这些单词重新组合。

重新组合字符串

我们将使用以下步骤来将反转的单词重新组合为一个字符串:

  • 遍历单词列表,并反转每个单词
  • 将单词按其原来的顺序连接起来,并在单词之间添加一个空格

以下是将反转的单词重新组合为字符串的示例代码:

std::string reverseString(std::string str) {
    std::vector<std::string> words = splitString(str);
    std::string reversed = "";
    for (int i = 0; i < words.size(); i++) {
        std::string word = reverseWord(words[i]);
        reversed += word;
        if (i != words.size() - 1) {
            reversed += " ";
        }
    }
    return reversed;
}

该函数将返回一个字符串,该字符串是给定字符串中单词反转后的版本。

完整源代码
#include <sstream>
#include <vector>
#include <string>

std::vector<std::string> splitString(std::string str) {
    std::istringstream iss(str);
    std::vector<std::string> words;
    std::string word;
    while (iss >> word) {
        words.push_back(word);
    }
    return words;
}

std::string reverseWord(std::string word) {
    int left = 0;
    int right = word.length() - 1;

    while (left < right) {
        std::swap(word[left], word[right]);
        left++;
        right--;
    }

    return word;
}

std::string reverseString(std::string str) {
    std::vector<std::string> words = splitString(str);
    std::string reversed = "";
    for (int i = 0; i < words.size(); i++) {
        std::string word = reverseWord(words[i]);
        reversed += word;
        if (i != words.size() - 1) {
            reversed += " ";
        }
    }
    return reversed;
}

现在,我们可以使用上述函数来反转给定字符串中的单词了。