C++成長の道(11)——常用ヘッダファイル及び対応関数【継続更新ing】
3122 ワード
ヘッダファイル:iostream static_castは強制タイプ変換オペレータです.
強制タイプ変換、明示変換とも呼ばれ、C++の強制タイプ変換オペレータにstatic_があります.cast、dynamic_cast、const_cast、reinterpert_cast 4個.このセクションではstatic_について説明します.castオペレータ.コンパイラが暗黙的に実行する任意のタイプの変換はstatic_castは、intとfloat、doubleとchar、enumとintの間の変換などを完了します.
コンパイラがタイプ変換を暗黙的に実行すると、ほとんどのコンパイラから警告が表示されます.
static_の使用castはコンパイラに、このような精度を損なう変換は知っているうちに行われることを明確に伝えることができ、読書プログラムの他のプログラマーに、油断ではなく変換の目的を明確にすることができます.
精度の高いタイプを精度の小さいタイプに変換して、static_castはビットカットを用いて処理する. static_を使用castはvoid*ポインタに格納されている値を取り戻すことができます.
static_castは、ベースクラスと派生クラスポインタまたは参照タイプとの間の変換としても使用できます.しかし、実行時のチェックは行われず、dynamic_に及ばない.cast安全.static_castはタイプ変換文で提供される情報のみによって変換され、dynamic_castはクラス継承システム全体を巡ってタイプチェックを行うためdynamic_castはstatic_より実行効率が高いcastは少し悪いです.次に、親クラスとその派生クラスがあります.
このとき,派生クラスとベースクラスタイプポインタの変換を行う.下から上への変換は安全であり,上から下への変換は必ずしも安全ではないことに注意する.
static_castは任意のタイプの式をvoidタイプに変換することができます. static_castは任意のタイプの式をvoidタイプに変換します. また、const_castと比較してstatic_castは変数のconst属性を交換することはできません.volitaleや__も含まれています.unalignedプロパティ ヘッダファイル:iomanip関数:setw() 機能:出力が占める列数を指定します. 例:setw(5)<
cが表す文字を出力し、出力データ項目の長さが5未満の場合は右揃えにする.5を超えると実長で出力
ヘッダファイル:string 文字列変数を定義する場合、string country="CHINA";このヘッダファイルを含める必要があります. 文字列の長さが要求するとlength=countryとなる.length();//strの長さ を取る getline():行全体の文字列 を入力
例:
getline(cin,s2);
文字列を入力する場合は、他の区切り記号を文字列の終了フラグ(カンマ、セミコロンなど)として使用し、区切り記号をgetlineの3番目のパラメータとして使用できます.例えばgetline(cin,s 2,’);
実行結果:
Beijing,China
City: Beijing State: China
San Francisco,the United States
City: San Francisco State: the United States
強制タイプ変換、明示変換とも呼ばれ、C++の強制タイプ変換オペレータにstatic_があります.cast、dynamic_cast、const_cast、reinterpert_cast 4個.このセクションではstatic_について説明します.castオペレータ.
double a = 1.999;
int b = static_cast(a); // a = b ;
コンパイラがタイプ変換を暗黙的に実行すると、ほとんどのコンパイラから警告が表示されます.
e:\vs 2010 projects\static_cast\static_cast\static_cast.cpp(11): warning C4244: “ ”: “double” “int”,
static_の使用castはコンパイラに、このような精度を損なう変換は知っているうちに行われることを明確に伝えることができ、読書プログラムの他のプログラマーに、油断ではなく変換の目的を明確にすることができます.
精度の高いタイプを精度の小さいタイプに変換して、static_castはビットカットを用いて処理する.
double a = 1.999;
void * vptr = & a;
double * dptr = static_cast(vptr);
cout<
static_castは、ベースクラスと派生クラスポインタまたは参照タイプとの間の変換としても使用できます.しかし、実行時のチェックは行われず、dynamic_に及ばない.cast安全.static_castはタイプ変換文で提供される情報のみによって変換され、dynamic_castはクラス継承システム全体を巡ってタイプチェックを行うためdynamic_castはstatic_より実行効率が高いcastは少し悪いです.次に、親クラスとその派生クラスがあります.
class ANIMAL
{
public:
ANIMAL():_type("ANIMAL"){};
virtual void OutPutname(){cout<
このとき,派生クラスとベースクラスタイプポインタの変換を行う.下から上への変換は安全であり,上から下への変換は必ずしも安全ではないことに注意する.
int main()
{
// , 。
ANIMAL * ani1 = new ANIMAL ;
DOG * dog1 = static_cast(ani1);
//dog1->OutPuttype();// , ANIMAL OutPutType(); 。
// ,
ANIMAL * ani3 = new DOG;
DOG* dog3 = static_cast(ani3);
dog3->OutPutname(); //
//
DOG *dog2= new DOG;
ANIMAL *ani2 = static_cast(dog2);
ani2->OutPutname(); // ,
//
system("pause");
}
cが表す文字を出力し、出力データ項目の長さが5未満の場合は右揃えにする.5を超えると実長で出力
ヘッダファイル:string
例:
getline(cin,s2);
文字列を入力する場合は、他の区切り記号を文字列の終了フラグ(カンマ、セミコロンなど)として使用し、区切り記号をgetlineの3番目のパラメータとして使用できます.例えばgetline(cin,s 2,’);
include
#include
using namespace std;
int main() {
for (int i = 0; i < 2; i++){
string city, state;
getline(cin, city, ',');
getline(cin, state);
cout << "City:" << city << “ State:" << state << endl;
}
return 0;
}
実行結果:
Beijing,China
City: Beijing State: China
San Francisco,the United States
City: San Francisco State: the United States