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

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

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

在字符串处理中,反转单词顺序是一个常见的需求,比如将"I love programming in C++"反转为"C++ in programming love I"。本文将介绍如何使用C++编写一个反转单词顺序的程序。

程序思路

假设我们有一个字符串"Hello World",我们需要将其按单词反转。具体的反转过程分为以下几个步骤:

  1. 定义一个新字符串,用于存储反转后的结果。

  2. 从后往前遍历原字符串,将每个单词复制到新字符串中。

  3. 每个单词之间要添加空格。

  4. 将新字符串拷贝回原字符串中。

  5. 输出反转后的结果。

代码实现
#include <iostream>
#include <string>
#include <vector>

using namespace std;

void reverseWords(string &s) {
    vector<string> v;
    string word = "";
    for (int i = 0; i < s.length(); i++) {
        if (s[i] == ' ') {
            v.push_back(word);
            word = "";
        } else {
            word += s[i];
        }
    }
    v.push_back(word);
    string ans = "";
    for (int i = v.size() - 1; i >= 0; i--) {
        ans += v[i] + " ";
    }
    s = ans.substr(0, ans.length() - 1);
}

int main() {
    string str = "I love programming in C++";
    cout << "Original String : " << str << endl;
    reverseWords(str);
    cout << "Reversed String : " << str << endl;
    return 0;
}
代码解释
  1. vector<string> v:定义一个字符串向量,用于存储分离出来的单词。

  2. string word = "":定义一个字符串,用于存储每个单词。

  3. if (s[i] == ' '):判断是否为单词分隔符,如果是,将单词存入字符串向量中,并清空单词字符串。

  4. v.push_back(word):将单词存入字符串向量中。

  5. string ans = "":定义一个字符串,用于存储反转后的结果。

  6. ans += v[i] + " ":将每个单词按反转顺序添加到结果字符串中。

  7. s = ans.substr(0, ans.length() - 1):将反转后的字符串拷贝回原字符串中。

运行结果

Original String : I love programming in C++
Reversed String : C++ in programming love I

可以看到,程序成功地将字符串按单词反转了。

总结

本文详细介绍了使用C++编写反转字符串中单词顺序的程序。代码简洁易懂,思路清晰。希望能够帮助大家更好地理解字符串处理。