C ++文字列
- C ++は、文字列表現の2種類が用意されています。
- Cスタイルの文字列
- 導入されたC ++クラス型の文字列
Cスタイルの文字列
Cスタイルの文字列は、C言語の起源、およびC ++でサポートされ続けています。ヌル文字列は、実際に使用「\ 0」文字の1次元配列が終了しました。したがって、文字列が含まれている、NULLで終わる文字列。
次の文は作成して「こんにちは」の文字列を初期化します。店舗null文字の配列の末尾ので、単語の文字数よりも文字の配列のように、複数のサイズの「Hello」です。
チャー挨拶[6] = { 'H'、 'E'、 'L'、 'L'、 'O'、 '\ 0'}。
配列の初期化規則によると、次の書かれた文を上記の文を置くことができます。
挨拶のchar [] = "こんにちは";
文字列のC / C ++定義されました
あなたは、文字列定数の末尾にヌル文字を必要としません。ときにC ++コンパイラは、文字列の末尾に「\ 0」が自動的に、配列を初期化します
例
#include <iostream>
using namespace std;
int main ()
{
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
return 0;
}
上記のコードがコンパイルおよび実行されると、次の結果を生成します:
Greeting message: Hello
C ++は、オペレーティングNULLで終わる文字列のための多くの機能があります。
strcpyの(S1、S2); ----コピーストリングS2 S1にストリング。
STRCAT(S1、S2); ----ストリングストリングS1、S2の一端に接続されています。
STRLENは、(S1); ---- S1の文字列の長さを返します。
strcmp(S1、S2)、S1、S2が同じである場合----は、0を返す; S1場合<S2、戻り値が0以上である場合は、S1> S2、戻り値が0よりも大きいです。
strchr(S1、CH); ----は、第CHを発生する第1の文字列s1の位置へのポインタを返します。
STRSTR(S1、S2); ----は、文字列の最初の出現のストリングS1、S2の位置へのポインタを返します。
CでのStringクラス++
C ++標準ライブラリは、すべての上記の操作のサポート、また、添加されるその他の多くのことを文字列クラスの種類を提供します。私たちは、今のは、次の例を見てみましょう、C ++標準ライブラリのクラスを学びます。
これまでのところ、我々はクラスとオブジェクトを説明していないので、今、あなたは徹底的に、このインスタンスを理解できないことがあります。今後、あなたは、そのためのオブジェクト指向の概念は、周り戻ってきて、この例では、単にザッと見て理解し、このインスタンスを理解することができます。
例
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string str1 = "Hello";
string str2 = "World";
string str3;
int len ;
// 复制 str1 到 str3
str3 = str1;
cout << "str3 : " << str3 << endl;
// 连接 str1 和 str2
str3 = str1 + str2;
cout << "str1 + str2 : " << str3 << endl;
// 连接后,str3 的总长度
len = str3.size();
cout << "str3.size() : " << len << endl;
return 0;
}
上記のコードがコンパイルおよび実行されると、次の結果を生成します:
str3 : Hello
str1 + str2 : HelloWorld
str3.size() : 10
日付関数を学習
C ++標準ライブラリは、いわゆる日付の種類を提供していません。C ++は、操作の日付と時刻のためのC言語の構造と機能を継承しています。日時の構造と機能を使用するために、C ++プログラムで参照
clock_t、time_t型、size_tのとTM:4時間関連の種類があります。clock_t型、size_t型のtime_tとシステム時刻と日付が特定の整数として表すことができます。
次のように構造型TMはtm構造体が定義され、C構造の日時として記憶されます。
struct tm {
int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月,范围从 0 到 11
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
}
現在の日付と時刻
次の例では、現地時間と協定世界時(UTC)を含め、現在のシステムの日付と時刻を取得します。
例
#include <iostream>
#include <ctime>
using namespace std;
int main( )
{
// 基于当前系统的当前日期/时间
time_t now = time(0);
// 把 now 转换为字符串形式
char* dt = ctime(&now);
cout << "本地日期和时间:" << dt << endl;
// 把 now 转换为 tm 结构
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "UTC 日期和时间:"<< dt << endl;
}
上記のコードがコンパイルおよび実行されると、次の結果を生成します:
本地日期和时间:Sat Jan 8 20:07:41 2011
UTC 日期和时间:Sun Jan 9 03:07:41 2011
構造化フォーマットの時間tmを使用します
C / C ++、特に重要で日付や時刻関連事業とするとtm構造体。tm構造体は、C構造の形式で日付と時刻を保持しています。ほとんどの時間関連の機能は、tm構造体を使用しています。次の例では、TMの構造や日時に関連した様々な機能を使用しています。
アクセス構造体のメンバへ>オペレータ-構造を使用して練習する前に、C構造の基本的な理解を持って、矢印を使用する方法を知っておく必要があります。
例
#include <iostream>
#include <ctime>
using namespace std;
int main( )
{
// 基于当前系统的当前日期/时间
time_t now = time(0);
cout << "1970 到目前经过秒数:" << now << endl;
tm *ltm = localtime(&now);
// 输出 tm 结构的各个组成部分
cout << "年: "<< 1900 + ltm->tm_year << endl;
cout << "月: "<< 1 + ltm->tm_mon<< endl;
cout << "日: "<< ltm->tm_mday << endl;
cout << "时间: "<< ltm->tm_hour << ":";
cout << ltm->tm_min << ":";
cout << ltm->tm_sec << endl;
}
上記のコードがコンパイルおよび実行されると、次の結果を生成します:
1970 到目前时间:1503564157
年: 2017
月: 8
日: 24
时间: 16:42:37
時間のフォーマット
用途#include <sstream>
c++ int i,j,k; stringstream s;//包含在sstream头文件里 s<<1234; string ch = s.str(); cout<<ch<<endl; while(1); return 0;