用c++實(shí)現(xiàn)將文本每個(gè)單詞首字母轉(zhuǎn)換為大寫
更新時(shí)間:2013年05月29日 16:08:50 作者:
本篇文章是對(duì)用c++實(shí)現(xiàn)將文本每個(gè)單詞首字母轉(zhuǎn)換為大寫的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
利用C++,讀入一個(gè)英文文本,并將文本中的每個(gè)英文單詞首字母大寫。
本程序練習(xí)了從一個(gè)文本中讀入流,用到了fstream流。 在文本的轉(zhuǎn)換過程中,用到了isalpha()——是否是字母,toupper()——轉(zhuǎn)換為大寫字符 這兩個(gè)函數(shù)(針對(duì)string對(duì)象的單個(gè)字符的操作。類似的操作還有isalnum()——是否是字母或數(shù)字,iscntrl()——是否是控制字符, isdigit()——是否是數(shù)字,isgraph()——是否不是空格,但可以打印,islower()——是否是小寫字母, isprint()——是否是可以打印的字符,ispunct()——是否是標(biāo)點(diǎn)符號(hào),isspace()——是否是空格,isupper()——是否是大寫字母,isxdigit()——是否是十六進(jìn)制數(shù),tolower()——轉(zhuǎn)換為小寫。
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//讀出文件到控制臺(tái)
char buffer[500];
string str;
ifstream ifs; //提供讀文件功能
ifs.open("d:\\com.txt",ios::in);//in--打開文件做讀操作
cout << "d:\\com.txt" << "中的內(nèi)容如下:" << endl;
while(!ifs.eof()) //判斷是否達(dá)到stream的結(jié)尾
{
ifs.getline(buffer, 500, '\n'); //字符達(dá)到256個(gè)或遇到換行就結(jié)束
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]); //注意這里轉(zhuǎn)化之后要賦一下值
}
}
}
cout << str << endl;
}
ifs.close();
}
本程序練習(xí)了從一個(gè)文本中讀入流,用到了fstream流。 在文本的轉(zhuǎn)換過程中,用到了isalpha()——是否是字母,toupper()——轉(zhuǎn)換為大寫字符 這兩個(gè)函數(shù)(針對(duì)string對(duì)象的單個(gè)字符的操作。類似的操作還有isalnum()——是否是字母或數(shù)字,iscntrl()——是否是控制字符, isdigit()——是否是數(shù)字,isgraph()——是否不是空格,但可以打印,islower()——是否是小寫字母, isprint()——是否是可以打印的字符,ispunct()——是否是標(biāo)點(diǎn)符號(hào),isspace()——是否是空格,isupper()——是否是大寫字母,isxdigit()——是否是十六進(jìn)制數(shù),tolower()——轉(zhuǎn)換為小寫。
復(fù)制代碼 代碼如下:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
//讀出文件到控制臺(tái)
char buffer[500];
string str;
ifstream ifs; //提供讀文件功能
ifs.open("d:\\com.txt",ios::in);//in--打開文件做讀操作
cout << "d:\\com.txt" << "中的內(nèi)容如下:" << endl;
while(!ifs.eof()) //判斷是否達(dá)到stream的結(jié)尾
{
ifs.getline(buffer, 500, '\n'); //字符達(dá)到256個(gè)或遇到換行就結(jié)束
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]); //注意這里轉(zhuǎn)化之后要賦一下值
}
}
}
cout << str << endl;
}
ifs.close();
}
相關(guān)文章
linux C 打印錯(cuò)誤信息和標(biāo)準(zhǔn)輸入輸出詳細(xì)介紹
這篇文章主要介紹了linux C 打印錯(cuò)誤信息和標(biāo)準(zhǔn)輸入輸出詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12C++聚合體初始化aggregate initialization詳細(xì)介紹
這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對(duì)象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法2023-02-02C++實(shí)現(xiàn)當(dāng)前時(shí)間動(dòng)態(tài)顯示的方法
這篇文章主要介紹了C++實(shí)現(xiàn)當(dāng)前時(shí)間動(dòng)態(tài)顯示的方法,涉及C++時(shí)間操作及Sleep方法的使用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07FFmpeg實(shí)戰(zhàn)之分離出PCM數(shù)據(jù)
PCM(Pulse?Code?Modulation,脈沖編碼調(diào)制)音頻數(shù)據(jù)是未經(jīng)壓縮的音頻采樣數(shù)據(jù)裸流,它是由模擬信號(hào)經(jīng)過采樣、量化、編碼轉(zhuǎn)換成的標(biāo)準(zhǔn)數(shù)字音頻數(shù)據(jù)。本文將通過FFmpeg實(shí)現(xiàn)分離PCM數(shù)據(jù),感興趣的可以了解一下2023-02-02vscode+qt5+cmake編譯調(diào)試過程解析
這篇文章主要介紹了vscode+qt5+cmake編譯調(diào)試過程解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-0316種C語(yǔ)言編譯警告(Warning)類型的解決方法
由于編譯的警告各種各樣,根本不可以一一羅列出來,下面只是列舉出比較典型的十六種警告,還有一些警告,大家只要根據(jù)字面意思,就可以很快的查找出來,并解決之。希望對(duì)大家有所幫助。2014-08-08