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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。