将字符串中每个单词的第一个和最后一个字符大写

data structurec++programming

简介

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

演示 1

String = "coding world"

输出

CodinG WorlD

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

演示 2

String = "`hello all"

输出

hellO AlL

在上面的演示中,输入的字符串是"hello all",将字符串中每个单词的起始和结束字符大写后的结果为helloO 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)
{

	// 创建与输入字符串相似的字符串
	string newStr = s;
	for (int x = 0; x < newStr.length(); x++)
	{
		int l = x;
		while (x < newStr.length() && newStr[x] != ' ')
			x++;

		// 检查字符是否大写

		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 << "将每个单词的第一个和最后一个字母大写后得到的字符串是 : "<<capitalizeString(s);
}

输出

将每个单词的第一个和最后一个字母大写后得到的字符串是 : HellO TutorialS PoinT

示例 2

实现将字符串中每个单词的第一个和最后一个字符大写的任务。用户定义函数 capitalizeString() 遍历字符串的每个字符并检查单词的第一个和最后一个字符。到达后,它将字符大写。大写的单词存储在结果变量中并返回结果。

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

string capitalizeString(string str)
{
   // 用于跟踪当前字符是否是单词的第一个字符的标记
    bool newWord = true; 

    for (size_t x = 0; x < str.length(); ++x) 
    {
        if (isalpha(str[x]))
        {
            // Check if the character is alphabetic
            if (newWord) 
            {
              // 将单词的首字母大写
                str[x] = toupper(str[x]); 
                newWord = false;
            }
            if (x + 1 == str.length() || !isalpha(str[x + 1])) 
            {
               // 将单词的最后一个字符大写
                str[x] = toupper(str[x]); 
                newWord = true;
            }
        }
        else 
        {
            newWord = true;
        }
    }
    return str;
}

int main()
{
    string str = "hello coding world";
    
    string result = capitalizeString(str);
    cout << "将第一个和最后一个字符大写后的结果字符串为:" << result << endl;
    
    return 0;
}

输出

将第一个和最后一个字符大写后的结果字符串为:HellO CodinG WorlD

结论

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


相关文章