用c++实现将文本每个单词首字母转换为大写

 更新时间:2013年05月29日 16:08:50   作者:  
本篇文章是对用c++实现将文本每个单词首字母转换为大写的方法进行了详细的分析介绍,需要的朋友参考下
利用C++,读入一个英文文本,并将文本中的每个英文单词首字母大写。
本程序练习了从一个文本中读入流,用到了fstream流。 在文本的转换过程中,用到了isalpha()——是否是字母,toupper()——转换为大写字符 这两个函数(针对string对象的单个字符的操作。类似的操作还有isalnum()——是否是字母或数字,iscntrl()——是否是控制字符, isdigit()——是否是数字,isgraph()——是否不是空格,但可以打印,islower()——是否是小写字母, isprint()——是否是可以打印的字符,ispunct()——是否是标点符号,isspace()——是否是空格,isupper()——是否是大写字母,isxdigit()——是否是十六进制数,tolower()——转换为小写。
复制代码 代码如下:

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 //读出文件到控制台
 char buffer[500];
 string str;
 ifstream ifs; //提供读文件功能
 ifs.open("d:\\com.txt",ios::in);//in--打开文件做读操作
 cout << "d:\\com.txt" << "中的内容如下:" << endl;
 while(!ifs.eof())  //判断是否达到stream的结尾
 {
  ifs.getline(buffer, 500, '\n'); //字符达到256个或遇到换行就结束
  str = buffer;
  if (str.empty()) // 如果某行为空,则跳过
  {
   continue;
  }
  else
  {
   if (isalpha(str[0]))
   {
    str[0] = toupper(str[0]);
   }
   for (string::size_type index = 1; index != str.size(); index++)
   {
    //str[index]为字母,且它前面的不为字母,则大写
    if (isalpha(str[index]) && !isalpha(str[index-1]))
    {
     str[index] = toupper(str[index]);  //注意这里转化之后要赋一下值
    }
   }
  }
  cout << str << endl;
 }
 ifs.close();
}

相关文章

  • C/C++ Qt TabWidget 实现多窗体创建详解

    C/C++ Qt TabWidget 实现多窗体创建详解

    TabWidget组件配合自定义Dialog组件,可实现一个复杂的多窗体分页结构。这篇文章就主要介绍了如何通过TabWidget实现多窗体的创建,感兴趣的小伙伴可以了解一下
    2021-12-12
  • c++之std::get_time和std::put_time

    c++之std::get_time和std::put_time

    std::get_time和std::put_time是C++中用于日期和时间的格式化和解析的函数,它们都包含在<iomanip>头文件中,std::get_time用于从输入流中解析日期时间字符串,而std::put_time则用于将std::tm结构格式化为字符串
    2024-10-10
  • C++实现字符串删除字符后逆序输出

    C++实现字符串删除字符后逆序输出

    这篇文章主要为大家详细介绍了C++实现字符串删除字符后逆序输出,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C语言二叉排序(搜索)树实例

    C语言二叉排序(搜索)树实例

    这篇文章主要为大家详细介绍了C语言二叉排序树实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 详解C++-(=)赋值操作符、智能指针编写

    详解C++-(=)赋值操作符、智能指针编写

    C++的智能指针是克服C++大坑的非常有用的的手段,之所以说它智能,是因为它为程序员克服了重要的编程问题——悬挂指针,下面通过本文给大家分享C++-(=)赋值操作符、智能指针编写,感兴趣的朋友一起看看吧
    2018-03-03
  • OpenCV基于距离变换和分水岭实现图像分割

    OpenCV基于距离变换和分水岭实现图像分割

    图像分割是根据灰度、颜色、纹理和形状等特征,把图像分成若干个特定的、具有独特性质的区域。本文将基于距离变换和分水岭实现图像分割,需要的可以了解一下
    2022-09-09
  • C++中单链表的建立与基本操作

    C++中单链表的建立与基本操作

    以下是对C++中单链表的建立与基本操作进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • C/C++实现词法分析程序的示例代码

    C/C++实现词法分析程序的示例代码

    这篇文章主要为大家详细介绍了如何基于C/C++实现一个简单的词法分析程序,并通过完成词法分析程序,了解词法分析的过程,感兴趣的小伙伴可以跟随小编一起学习学习
    2023-05-05
  • C 创建链表并将信息存储在二进制文件中读取的实例代码

    C 创建链表并将信息存储在二进制文件中读取的实例代码

    C 创建链表并将信息存储在二进制文件中读取的实例代码,需要的朋友可以参考一下
    2013-03-03
  • C++编辑距离(动态规划)

    C++编辑距离(动态规划)

    这篇文章主要介绍了C++编辑距离(动态规划),编辑距离是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数,限免详细内容,需要的小伙伴可以参考一下
    2022-01-01

最新评论