Code Fix

初級

C++でerror: missing terminating " character が出る原因と直し方

文字列リテラルの閉じクォート(")を書き忘れたときに出るエラーです。閉じ忘れた行がそのままエラー行になり、後続の行でも連鎖的にエラーが出ることがあります。

エラーメッセージの読み方

main.cpp:3:18: error: missing terminating " character
main.cpp
ファイル名
3
行番号
18
列番号 — この位置でg++が構文解析に失敗しました
missing terminating " character
内容 — 期待していたもの、または受け付けられなかったもの

このエラーが出る典型パターン

パターン1

 1  #include <iostream>
 2  int main() {
 3      std::cout << "hello  << std::endl;
                        ^
 4      return 0;
 5  }
main.cpp:3:18: error: missing terminating " character

文字列リテラルの閉じクォートを忘れると、その行の終わりまで読んでも文字列が終わらないため、g++はそこでエラーにします。

直し方: "hello"hello" にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  #include <iostream>
 2  int main() {
 3      std::string msg = "good morning ;
                                 ^
 4      std::cout << msg << std::endl;
 5      return 0;
 6  }
main.cpp:3:23: error: missing terminating " character

閉じクォートが無い文字列は改行をまたげないため、次の行が本来意図した続きであっても連結されません。

直し方: "good morning"good morning" にします。

この問題を解いてみる →

パターン3

 1  #include <iostream>
 2  int main() {
 3      std::cout << "total: 100  << std::endl;
                           ^
 4      return 0;
 5  }
main.cpp:3:18: error: missing terminating " character

コロンや数字を含む文字列でも、閉じクォートが必要なことに変わりはありません。

直し方: "total: 100"total: 100" にします。

この問題を解いてみる →

よくある誤解

閉じクォートを忘れると「次の"までが1つの文字列として読まれる」と思われがちですが、実際にはC++の文字列リテラルは改行をまたげません。同じ行に閉じクォートが無い時点で即座にエラーとして報告されます。

まとめ

C++でerror: missing terminating " character が出る原因と直し方は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)