こんにちは､ そしてようこそ｡ この講義では､ 文字列の変換と､ いくつかの文字列関数についてお話したいと思います｡
具体的には､ 文字の大文字小文字を変換するのが一般的です｡
もし､ 文字列をすべて大文字にしたい場合は､ 幸いにも､
小文字から大文字に変換するtwo
upper関数と大文字から小文字に変換するtwo
lower関数がある｡
だから小文字から大文字､ 大文字から小文字｡
どちらの関数も､ 変換された文字か､ すでに正しい大文字になっている文字や､
句読点などの変換できない文字については､ 同じ文字を返します｡
つまり､ このように文字列を大文字に変換することができるのです｡
これらは､ 実際にはキャラクターごとに利用されることを忘れないでください｡
ですから､ もしバッファが文字配列だった場合､ バッファの各要素を調べて､
その文字に対してtwo upperを実行する必要があるのです｡
ここでは､ バッファの文字配列の各要素を調べて､
それを two upper メソッドに渡しています｡
そして､ 大文字の文字を返します｡ それをバフに割り当てます｡
それをヌル文字にぶつかるまでやるんです｡
つまり､ これは1行だけの4文なんですね｡
これは､ バッファ内の文字列全体を､
1文字ずつ段階的に大文字に変換するものである｡
ループは文字列の終了文字であるバックスラッシュゼロに到達すると停止する｡
char型のキャストは､ ASCII値であるint型の上位リターンが2つあり､
それを変換しているだけだからです｡
そして､ 小文字に変換したい場合も同じように､ 大文字小文字の変換機能を使うだけで､
とても簡単です｡
そこで､ ある文字列がケースを無視して別の文字列に出現するかどうかを調べるために､ strstr関数と組み合わせてtwo
upperという関数を使うことができる｡
そこで､ まさにそれを実現するこの例を見てみましょう｡
ここでは､ textとsubstringという2つの文字配列があります｡
テキストは100サイズ､ サブストリングは40サイズです｡
検索する文字列を100文字以内で入力してもらう｡
それを取得して､ テキストで保存しています｡
そして､ strstrを使って探したい文字列を入力し､ 次に部分文字列を入力するわけですが､
その際に他の部分文字列を入力します｡
そして､ 最初の文字列を表示し､ 次に2番目の文字列を表示します｡
次に､ 両方の文字列を大文字に変換する｡
そして､ 実際に2つ目の文字列が1つ目の文字列を見つけたと言えるのです｡
そのため､ strstrを呼び出すときに､ 大文字小文字を無視することができます｡
なぜなら､
strstrの制限の1つは､ 大文字と小文字が区別されることだったことを思い出してください｡
というわけで､ textとsubstringはすべて大文字なので､
strstrを使うことができるようになりました｡
そしてまた､ これはある部分文字列が文字列全体の中でケースを無視しているかどうかを調べる方法である｡
まず､ すべてを大文字に変換して､ 今度は大文字の比較をしているだけなのですが､ このプログラムはそれをやっているのです｡
文字列を数値に変換したいことはよくあることです｡
つまり､ aで始まる特定の関数があるわけです｡
アトフ､ アトイ､ アトール､ アトールみたいなもんです｡
Atoi 非常に一般的な､ 文字列をintに変換することです｡
atofは文字列を変換するわけですが､ ASCII､ ASCIItofのようなものですね｡
文字列をデータ型に変換してくれるんだ｡
つまり､ atofはASCIIからfloatへ､ doubleからfloatへということです｡
そして､ 特定の戻り値を持つこともあります｡ 見つからない､ またはできない場合｡
だから､ 文字列を整数に変換できないこともある｡ 特に､ 単語があっただけの文字列の場合はそうだ｡
通常､ この機能を使うのは､ 例題にあるような場合です｡
98を持つ文字列がある場合｡ 4､ それはダブルで表すことができる｡
それでアトフができるんですね｡ ジェイソンの文字列があっても､ それをフローターや整数に変換することはできないので､
何も起こりません｡ ですから､ 数字を含む文字列がある場合､ これらのASCIIto関数を使って変換することができます｡
そして､ これはすべて標準のlibヘッダーファイルに含まれています｡
また､ 整数から文字列を作る場合は逆に､
intからASCIIを作るitoaのようなものも見かけますね｡
98という数字があって､ それを文字列に変換したい場合は､ itoaと言いますよね｡
また､ 新しい機能もあります｡
これらは､ atofとは対照的に､ string to
doubleに特化したものです｡
これらのstrtodやstrtof､
stringtoldを使用することができます｡
そして､ それぞれlong doubles floatsまたはfloats doublesに変換されるだけです｡
でも､ どっちでもいいんです｡ ASCIIのものは､ 従来のものです｡
他のstrtodsやstrtofsは､ 後のcの規格で追加されたものだと思います｡
そこで､ コンバージョンを行う例を紹介します｡
とても､ 基本的なことなんです｡ ここでは､ str文字配列､
3． 5 スペース 2. 5 スペース 1. 26.
いくつかのポイントがあります｡ そして､ 変換できない場合は､
飛び出すまでやり通すのです｡
だからstrtodと言うのです｡ ポインタのアドレスであるptrを渡し､
文字列であるp文字列を渡します｡
5 2. 5.
さて､ なぜstrだけでなくpstrも渡すのかと言われそうですが､
その必要はありません｡ しかし､ ここでは実際に無変換であったかを確認したい｡
つまり､ 無変換をチェックしているため､ 両方のポインタを見なければならないのです｡
strは配列なので､ ptrとstrを比較することはできません｡
そこで､ 比較できるように､ 文字配列を表すためにpstrを使用することにします｡
そして､ この2つを比較すると､
pstrは無変換を保存したことになるので､ これで終了です｡
その価値を実際に変換することができなかったのです｡
そうでなければ､ もし値の変換ができたとしても､ それをプリントアウトするだけで､
その後は次の変換に向かうことになるのです｡ Pstarはpointerに等しくなる｡
これを実行すると､ 文字列配列のすべてが特定の値doubleに変換されることがわかります｡
私は通常､ atoi, atofを使用していますが､
どちらでもかまいません｡
以上が､ 変換機能です｡ ありがとうございます｡