📅  最后修改于: 2023-12-03 14:56:36.042000             🧑  作者: Mango
本文将介绍如何在 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;
}
现在,我们可以使用上述函数来反转给定字符串中的单词了。