c+++を使って、テキストの各単語の頭文字を大文字に変換することを実現します。


C+++を利用して、英語のテキストを読み込み、テキスト中の英語の単語ごとに頭文字を大文字にします。このプログラムは一つのテキストからストリームを読み込む練習をしました。fstreamストリームを使いました。テキストの変換には、isalpha()――アルファベットかどうか、touper()――大文字に変換する2つの関数(stringオブジェクトに対する単一文字の操作)が使われています。似たような操作にはisalnum()もあります。文字か数字か、iscntrl()かどうか――制御文字か、isdigit()かどうか――数字か、isgraph()かどうか――スペースではないですが、プリントできるかどうか、islower()――小文字か、isprint()かどうか――プリントできる文字かどうか、isput(スペース)かどうか――スペース記号かどうか。isuper()――大文字かどうか、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, '
'); // 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();
}