将字符串中每个单词的首字母和尾字母大写


简介

在本教程中,我们实现了一种方法,用于将输入字符串中每个单词的首字母和尾字母大写。通过迭代输入字符串 str,每个单词的起始和结束字母都被大写。我们使用两种方法用 C++ 编程实现了此问题。让我们从一些演示开始本教程。

演示 1

String = “coding world”

输出

CodinG WorlD

在上述演示中,考虑输入字符串以及将字符串每个单词的起始和结束字符大写后的结果为 CodinG WorlD。

演示 2

String = “`hello all”

输出

hellO AlL

在上述演示中,输入字符串为“hello all”。将字符串中每个单词的起始和结束字符大写后的结果为 hellO AlL。

C++ 库函数

length():它是一个字符串类库函数,在 C++ 标准库中定义。它以字节为单位返回输入字符串的长度。字符串的长度是字符串中字符的总数。

语法

string_name.length();

isalpha():此内置库函数在 <ctype> 头文件中定义。它检查字符串字符是否为字母。当字符串的字符为字母时,它返回一个整数值,否则返回零。

语法

isalpha(char);

toupper():此 C++ 库函数在 <cctype> 头文件中定义。它将小写字符转换为大写。

语法

toupper(char);

算法

  • 获取一个输入字符串。

  • 获取一个字符串数组。

  • 使用 for 循环迭代输入字符串中的所有字符。

  • 检查并大写字符串中每个单词的首字母和尾字母。

  • 如果首字母和尾字母是大写,则移动到下一个字符。

  • 检查空格和非字母字符。

  • 打印结果字符串。

示例 1

这里,我们实现了上述示例之一。函数 capitalizeString() 返回结果字符串。在 for 循环中,字符串 newString 用作输入字符串的等价物。for 循环迭代输入字符串的每个字母。

#include<bits/stdc++.h>
using namespace std;

string capitalizeString(string s)
{

	// Creating an string similar to input string
	string newStr = s;
	for (int x = 0; x < newStr.length(); x++)
	{
		int l = x;
		while (x < newStr.length() && newStr[x] != ' ')
			x++;

		// Checking if character is capital or not

		newStr[l] = (char)(newStr[l] >= 'a' && newStr[l] <= 'z'
						? ((int)newStr[l] - 32)
						: (int)newStr[l]);

		newStr[x - 1] = (char)(newStr[x - 1] >= 'a' && newStr[x - 1] <= 'z'
							? ((int)newStr[x - 1] - 32)
							: (int)newStr[x - 1]);
	}

	return newStr;
}


int main()
{
	string s = "hello tutorials point";
	//cout << s << "\n";
	cout << "Resulting string after capitalizing the first and last alphabet of each word is : "<<capitalizeString(s);
}

输出

Resulting string after capitalizing the first and last alphabet of each word is : HellO TutorialS PoinT

示例 2

实现将字符串中每个单词的首字母和尾字母大写的任务。用户定义的函数 capitalizeString() 迭代字符串的每个字符并检查单词的首字母和尾字母。到达它们时,它将字符大写。大写的单词存储在 result 变量中并返回结果。

#include <iostream>
#include <string>
#include <cctype> 
using namespace std;

string capitalizeString(string str)
{
   // Flag to track if the current character is the first character of a word
    bool newWord = true; 

    for (size_t x = 0; x < str.length(); ++x) 
    {
        if (isalpha(str[x]))
        {
            // Check if the character is alphabetic
            if (newWord) 
            {
              // Capitalize the first character of the word
                str[x] = toupper(str[x]); 
                newWord = false;
            }
            if (x + 1 == str.length() || !isalpha(str[x + 1])) 
            {
               // Capitalize the last character of the word
                str[x] = toupper(str[x]); 
                newWord = true;
            }
        }
        else 
        {
            newWord = true;
        }
    }
    return str;
}

int main() 
{
    string str = "hello coding world";

    string result = capitalizeString(str);
    cout << "Resulting string after capitalizing first and last character is:  " << result << endl;

    return 0;
}

输出

Resulting string after capitalizing first and last character is: HellO CodinG WorlD

结论

我们已经到达本教程的结尾。在本教程中,我们学习了一种方法,用于将输入字符串中每个单词的首字母和大写。我们通过两个 C++ 代码实现了该方法。使用 length()、isalpha() 和 toupper() 等不同的 C++ 库函数来实现该问题。

更新于: 2023-08-18

410 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告