20.1 文字処理
省略
20.2 文字列処理
省略
20.3 データ変換処理
/* 文字列を数値に変換 */
#include <csdlib>
atoi(s) // 文字列sをint型に変換して返す
atol(s) // 文字列sをlong型に変換して返す
atof(s) // 文字列sをdouble型に変換して返す
/* 数値を文字列に変換 */
省略
/* sprintfによる変換 */
#include <cstdio>
...
char ss[80];
int id = 1000;
double dd = 12.3456;
sprintf(ss, "%d", id);
sprintf(ss, "%f", dd);
20.4 数学処理
#include <cmath>
sin(x)
cos(x)
tan(x)
log(x)
log10(x)
pow(x,y)
sqrt(x)
すべてdouble型の引数を受け取り、double型の戻り値を返します。
またsin(),cos(),tan()などを使うときはその角度はすべてラジアンで表しますので
注意が必要です。
度数xをラジアンに変更するには、
x * 3.14159365 / 180.0
とします。
#include <cmath>
#define rad(x) ((x)*3.14159265/180.0)
...
cout << sin(rad(30)) << 'n';
cout << log10(100.0) << 'n';
cout << pow(2.0, 8.0) << 'n';
cout << sqrt(2.0) << 'n';
20.5 時間処理
time_t(time_t *ttpt); // 現在の暦時間をttptに得る。戻り値でも返す。
struct tm *localtime(const time_t *ttpt); // 暦時間ttptを構造体型の現地時間に変換する
struct tm *gmtime(const time_t *ttpt); // 暦時間ttptを世界標準時間に変換する
char *asctime(const struct tm *tmpt); // 構造体型の時間tmptを表示可能文字列に変換する
char *ctime(const time_t *ttpt); // 暦時間ttptを現地時間の表示可能文字列に変換する
time_t mktime(struct tm* tmpt); // 構造体型の時間tmptを暦時間に変換する
double difftime(time_t time1, time_t time2); // ふたつの時間差を計算する
/* 時間表現用データ型 */
省略
/* 時間表示形式の変換 */
省略
/* 経過時間の取得 */
20.6 その他の関数
/* exit関数 */
#include <cstdlib>が必要。
(1)main()関数の終端の'}'に出会うと終了
(2)main()関数の中に書かれたreturn分に出会うと終了
(3)任意の関数(mainを含む)の中にかかれたexit()関数に出会うと終了
if (~) exit(1);
正常終了のときは0を返す
異常終了のときは1以上を返す
とします。
/* rand関数 */
#include <cstdlib>が必要。
rand() // 乱数を返す
srand(int n) // 乱数系列を変更する
発生する乱数の範囲は「0~RAND_MAX」です。
記号定数RAND_MAXは、通常はstdlib.hの中で次のように指定されています。
#define RAND_MAX0x7fff
乱数幅を加工したいときは次のようにします。
0.0~1未満(0.99999...)の乱数を得たいとき
x = rand() / (RAND_MAX + 1.0);
0~n-1の乱数を得たいとき:方法1
x = rand() / (RAND_MAX + 1.0) * n;
0~n-1の乱数を得たいとき:方法2(RAND_MAXに比べてnの値が十分に小さいとき)
x = rand() % n;
srand(20); // 20を先頭とする乱数を生成する
プログラムを起動するたびに、異なる乱数系列にするには、システム時計から取得した
暦時間で設定するのが簡単です。
#include <ctime>
#include <cstdlib>
srand(time(NULL));
/* system関数 */
省略