ryotatake blog

Webエンジニア

C++でのシングルクォーテーション、ダブルクォーテーションの違い

2週間ほど前から趣味でC++を勉強し始めました。

C++で文字や文字列を囲うときに常にダブルクォーテーションを使っていたのですが、そのせいでコンパイルに失敗しました。

C++ではシングルクォーテーション、ダブルクォーテーションに明確な違いがあることを知ったので、メモしておきます。

環境

シングルクォーテーション

char型の文字を表すときには、シングルクォーテーション(')で囲います。ちなみにchar型の場合は、半角文字1文字(1バイト)しか入れることができません。

using namespace std;

int main() {
  char c_1 = 'a';  // OK
  char c_2 = "b";  // char型でダブルクォーテーション(")はエラーになる。
  char c_3 = 'あ'; // 「あ」は全角文字で1バイトではない。エラーにはならず警告だけ表示される。「あ」の最初の1バイト分だけc_3に格納されているみたい。
  return 0;
}

ダブルクォーテーション

string型の文字列を表すときには、ダブルクォーテーション(")で囲います。シングルクォーテーションは使えません。

#include <string>

using namespace std;

int main() {
  string s_1 = 'hoge'; // string型でシングルクォーテーション(')はエラーになる。
  string s_2 = "fuga"; // OK
  string s_3 = "あ";   // OK
  return 0;
}