用c++實現(xiàn)將文本每個單詞首字母轉換為大寫
更新時間:2013年05月29日 16:08:50 作者:
本篇文章是對用c++實現(xiàn)將文本每個單詞首字母轉換為大寫的方法進行了詳細的分析介紹,需要的朋友參考下
利用C++,讀入一個英文文本,并將文本中的每個英文單詞首字母大寫。
本程序練習了從一個文本中讀入流,用到了fstream流。 在文本的轉換過程中,用到了isalpha()——是否是字母,toupper()——轉換為大寫字符 這兩個函數(shù)(針對string對象的單個字符的操作。類似的操作還有isalnum()——是否是字母或數(shù)字,iscntrl()——是否是控制字符, isdigit()——是否是數(shù)字,isgraph()——是否不是空格,但可以打印,islower()——是否是小寫字母, isprint()——是否是可以打印的字符,ispunct()——是否是標點符號,isspace()——是否是空格,isupper()——是否是大寫字母,isxdigit()——是否是十六進制數(shù),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();
}
本程序練習了從一個文本中讀入流,用到了fstream流。 在文本的轉換過程中,用到了isalpha()——是否是字母,toupper()——轉換為大寫字符 這兩個函數(shù)(針對string對象的單個字符的操作。類似的操作還有isalnum()——是否是字母或數(shù)字,iscntrl()——是否是控制字符, isdigit()——是否是數(shù)字,isgraph()——是否不是空格,但可以打印,islower()——是否是小寫字母, isprint()——是否是可以打印的字符,ispunct()——是否是標點符號,isspace()——是否是空格,isupper()——是否是大寫字母,isxdigit()——是否是十六進制數(shù),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++聚合體初始化aggregate initialization詳細介紹
這篇文章主要介紹了C++聚合體初始化aggregate initialization,C++有很多初始化對象的方法。其中之一叫做 聚合體初始化(aggregate initialization) ,這是聚合體專有的一種初始化方法2023-02-02FFmpeg實戰(zhàn)之分離出PCM數(shù)據(jù)
PCM(Pulse?Code?Modulation,脈沖編碼調制)音頻數(shù)據(jù)是未經壓縮的音頻采樣數(shù)據(jù)裸流,它是由模擬信號經過采樣、量化、編碼轉換成的標準數(shù)字音頻數(shù)據(jù)。本文將通過FFmpeg實現(xiàn)分離PCM數(shù)據(jù),感興趣的可以了解一下2023-02-02