3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C++言語の基礎 第2弾:名前空間

Posted at

#C++言語の基礎< 名前空間 >

##はじめに
C++言語の基礎を簡単にまとめていくことで理解を深めていくことが目的である.その第2弾として,「名前空間」を扱う.

##環境
#####コンピュータ

デバイス MSI
プロセッサ Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 2.50GHz
実装RAM 8.00 GB (7.89 GB 使用可能)
OS Windows (Windows 10 Home, バージョン:20H2)

####C++

Editor Visual Studio Code
Compiler Minimalist GNU for Windows

##Hello World
####ヘッダとiostream

  • #includeでヘッダファイルを読み込むが,C言語と区別するためにヘッダと呼ばれ,.hの拡張子は不要
  • ヘッダの読み込みによりクラスが使えるようになる.(C言語では関数だった)

##名前空間
C言語にはなかった概念
####cout

  • C言語のprintf()と同じような働きを持つが,関数ではなくオブジェクトで入出力の出力部をつかさどる

  • C++言語の入出力ストリームでは$>>$および$<<$を用いることにより、ストリームと呼ばれる対象に対するパラメータのやりとりを行う

##標準名前空間
####名前空間とは
大規模開発において何かを定義する際,名前の重複問題となる.
→ これの解決策として名前空間という概念が作られた.名前空間が違えばその中で重複がない限り許される.

####名前空間の利用
名前空間には標準名前空間と呼ばれるもともとC++言語に備わっているものとユーザが定義するものがある.stdは標準名前空間であり,coutやendlなどはこの中のメソッドである.使うとき,名前空間::(変数名やクラス名)と記述するが,次の操作を行うことで名前空間の記述を簡略化できる.

    using namespace (名前空間); をmain関数の前で記述する

後に示す実装の中で具体的な部分を確認できる.

##コンソールからの入力
####cin

  • C言語のscanf()と同じような働きを持つが,関数ではなくオブジェクトで入出力の入力部をつかさどる

  • cin $>>$(変数)記述により変数に入力できる.なお,後ろに続けて$>>$(変数)を付け加えていくことで半角スペース区切りで一度に複数個の力を可能とする.1つ1つの変数をEnterキーで入力していく場合その数だけ,cinを記述する.

##stringと文字列
####cin
C++言語では、文字操作を行うstringというクラスが存在する.これをcinおよびcoutと合わせて使うと大変便利.演算子を用いて文字への操作が可能となる.

####stringで用いられる主な演算子

演算子 意味
+ 文字列同士の足し算
+= 文字列同士の足し算(代入演算)
== 比較演算(内容が同等)
!= 比較演算(内容が異なる)
> 比較演算(文字列の大きさ)
< 比較演算(文字列の大きさ)

##実装
上記の説明を簡単な例で実装する.以下にソースコードとそのときの出力をそれぞれ示す.

#####ソースコード:Hello World

code_001.cpp
/*
  2021/04/23
  @Yuya Shimizu

  Hello World
*/

#include<iostream>
using namespace std;

int main(){
  cout << "Hello World" << endl;
  cout << "こんちには" << endl;

  return 0;
}

#####出力

Hello World
こんちには 

coutにより,文字が出力されている.using namespace std;の記述により,std::coutcoutと記述することできていることに注意.

#####ソースコード:名前空間

code_002.cpp
/*
  2021/04/23
  @Yuya Shimizu

  名前空間
*/

#include<iostream>
//using namespace std;

int main(){
  std::cout << "Hello World" << std::endl;
  std::cout << "こんちには" << std::endl;

  return 0;
}

code_001.cppでの記述とほぼ同じだが,using namespaceの記述がない.これにより,std::coutというようにクラスを名前空間と共に記述する必要が出てきている.
#####出力

Hello World
こんちには

#####ソースコード:入力

code_003.cpp
/*
  2021/04/23
  @Yuya Shimizu

  入力
*/

#include<iostream>
using namespace std;

int main(){
  int a;

  cin >> a;
  cout << "a = " << a << endl;
  
  return 0;
}

#####出力

25を入力した場合
25
a = 25

cinにより入力ができるようになっていることが確認できた.cinについてもcout同様,using namespace std;のおかげで,std::cinと記述しなくて済んでいる.
#####ソースコード:stringと文字列

code_004.cpp
/*
  2021/04/23
  @Yuya Shimizu

  stringと文字列
*/

#include<iostream>
#include<string>
using namespace std;

int main(){
  string s, t;

  t = "入力された文字は, ";

  cout << "文字列を入力:";
  cin >> s;
  cout << t + s << "です." << endl;
  
  return 0;
}

#####出力

testという文字を入力した場合
文字列を入力:test
入力された文字は, testです.

確かに入力した文字を用意していた文字列と結合させられていることが確認できる.ただし,今の結果を得るだけであれば,わざわざ結合しなくとも,coutにより,<<で足していくこともできる.

##感想
C++言語はC言語の拡張でC言語とあまり変わらないだろうと思っていたが,いざ勉強して見ると少し雰囲気が違うと感じられる.これを機に気を引き締めて学習を進めていきたい.

##参考文献
1週間で身につくC++言語の基本       シフトシステム株式会社
( https://cpp-lang.sevendays-study.com/index.html ) 2021/04/25

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?