質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

Q&A

解決済

2回答

4995閲覧

C++ stringを使用するとcoutが動作しない

progokina8

総合スコア4

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

MinGW

MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

0グッド

0クリップ

投稿2021/04/19 02:06

編集2021/04/20 01:01

前提・実現したいこと

下記のC++コードdemo.cppを記述しましたが、何も出力されませんでした。
エラーもなくコンパイルもできたので、環境設定の問題かと思います。
対処法のご教授お願い致します。
(追記)実行環境はVisual Studio Codeです。
(追記)実行時のスクリーンショットを追加しました。(白塗り部分はユーザー名です)
![イメージ説明]

該当のソースコード

C++

1#include <iostream> 2#include <string> 3 4using namespace std; 5 6int main(){ 7 string name = "John"; 8 cout << name << endl; 9 return 0; 10} 11

発生している問題

以下のようにコンパイル・実行しても何も出力されませんでした。

$ g++ demo.cpp $ .\a.exe $ //ここに本来Johnが出力されるはず

c_cpp_properties.jsonの中身

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-msvc-x64" } ], "version": 4 }

試したこと

次のコードは正しく動作しました。stringを使用しない場合のコードです。

C++

1#include <iostream> 2#include <string> 3 4using namespace std; 5 6int main(){ 7 cout << "John" << endl; 8 return 0; 9} 10

(追記)g++ -o a.exe -v -Wall -Wextra -pedantic -std=c++17 demo.cppの実行結果は以下の通りです。ただし、***はユーザー名です。

Using built-in specs. COLLECT_GCC=C:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe Target: mingw32 Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgvr sion='MinGW.org GCC Build-20200227-1' Thread model: win32 gcc version 9.2.0 (MinGW.org GCC Build-20200227-1) COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/cc1plus.exe -quiet -v -iprefix c:\mingw\bin../lib/gcc/mingw32/9.2.0/ demo.cpp -quiet -dumpbase demo.cpp -mtune=generic -march=i586 -auxbase demo -Wall -Wextra -Wpedantic -std=c++17 -version -o C:\Users***\AppData\Local\Temp\ccjKtxsx.s GNU C++17 (MinGW.org GCC Build-20200227-1) version 9.2.0 (mingw32) compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "c:\mingw\bin../lib/gcc/mingw32/9.2.0/../../../../mingw32/include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++"ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++/mingw32" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++/backward" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include" ignoring duplicate directory "/mingw/lib/gcc/mingw32/9.2.0/../../../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include-fixed" ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/../../../../mingw32/include" ignoring duplicate directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++ c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++/mingw32 c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++/backward c:\mingw\bin../lib/gcc/mingw32/9.2.0/include c:\mingw\bin../lib/gcc/mingw32/9.2.0/../../../../include c:\mingw\bin../lib/gcc/mingw32/9.2.0/include-fixed End of search list. GNU C++17 (MinGW.org GCC Build-20200227-1) version 9.2.0 (mingw32) compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 94ad7bdd461e5339f6b4ce0e10df4842 COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/as.exe -v -o C:\Users***\AppData\Local\Temp\ccUZTCx9.o C:\Users***\AppData\Local\Temp\ccjKtxsx.s GNU assembler version 2.32 (mingw32) using BFD version (GNU Binutils) 2.32 COMPILER_PATH=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ LIBRARY_PATH=c:/mingw/bin/../lib/gcc/mingw32/9.2.0/;c:/mingw/bin/../lib/gcc/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/lib/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../ COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users***\AppData\Local\Temp\ccCOwQnb.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmsvcrt -Bdynamic -u ___register_frame_info -u ___deregister_frame_info -o a.exe c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../crt2.o c:/mingw/bin/../lib/gcc/mingw32/9.2.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0 -Lc:/mingw/bin/../lib/gcc -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/lib -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../.. C:\Users***\AppData\Local\Temp\ccUZTCx9.o -lstdc++ -lmingw32 -lmingwex -lgcc_s -lgcc -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lmingwex -lgcc_s -lgcc -lmoldname -lmsvcrt c:/mingw/bin/../lib/gcc/mingw32/9.2.0/crtend.o COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/04/19 02:24

「発生している問題」の方で提示しているコマンドラインでの実行はMinGWのg++のようですが、「c_cpp_properties.jsonの中身」ではcompilerPathにMSVC(Visual Studio 2019)のcl.exe をセットしていますね。なんか変です。
progokina8

2021/04/19 03:02

デフォルトがこの設定になっていたのですが...。 どう直せば動作するのでしょうか。 jsonファイルの中身を触ったことが無いので勝手に変更するのが不安です。
ardin

2021/04/19 03:07

MinGWをインストールしているならば、そのパスを通すだけです。 compilerPathをg++.exeがあるパスへ変えましょう。 ちなみに自分のほうでは、そのようにして文字が出るのを確認しました。
progokina8

2021/04/19 03:31

有り難うございます。 試してみます。
progokina8

2021/04/19 03:36

ardinさん compilerPathをC:/MinGW/bin/g++.exeに、intelliSenseModeをgcc-x86に変更しましたが出力されませんでした。 環境設定に詳しくないもので申し訳ありません。
yuki23

2021/04/19 04:04

c_cpp_properties.json はエディタの設定です。コンパイラの設定ではないのでそこをいじっても意味はありません。
Bull

2021/04/19 06:47

g++ --version の結果を書いて頂けませんか。 また、複数の MinGW をインストールしていませんか? 過去に見た事例ですが、複数の MinGW をインストールしていて、パスの関係で違うバージョンの DLL を参照したために正しく実行できなかったというのがありました。
Bull

2021/04/19 06:48

where g++ もやってみてください。
progokina8

2021/04/19 07:11

コメント有り難うございます。 >g++ --versionの結果 g++.exe (MinGW.org GCC Build-20200227-1) 9.2.0 >where g++の結果 C:\MinGW\bin\g++.exe また、複数のMinGWはインストールしていないと思います。 C言語を始めるために一度インストールしただけなので重複はないと思います。
Bull

2021/04/19 11:41

PATH の関係でそのような状況になる場合もあるようです。 "C:\MinGW\bin" を PATH の先頭に持っていては如何でしょうか?
progokina8

2021/04/19 11:44

すみません、PATHの先頭に持っていくとはどういう事でしょうか? 環境変数設定で一番上に持っていくという事ですか?
Bull

2021/04/19 12:55

そういうことです。 システムのプロパティで環境変数を編集する場合は、システム環境変数の一番上にしてください。 ユーザ環境変数よりシステム環境変数の方が優先されます。 また、コマンドプロンプトで実行する前に、PATH を表示させて、先頭にあるかどうか確認してみてください。
progokina8

2021/04/19 13:04

有り難うございます。 試してみます。
progokina8

2021/04/19 13:08

システム環境変数の一番上に"C:\MinGW\bin"を配置しました。 >echo %path% を用いて確認もできました。 しかし、前と同様、文字列Johnは出力されませんでした。 度々すみません。
Bull

2021/04/19 14:14

そうすると別の問題のようですね。 お手数をおかけして申し訳なかったですが、私には思い当たることはないです。
progokina8

2021/04/19 14:17

こちらこそお手数お掛けしました。 有り難うございます。 それにしても、コンパイル可能でエラーも出ないのに正しく出力されないのは変ですね...。 C++を勉強し始めようとした矢先なのでミスがあったら申し訳ないです。
guest

回答2

0

ベストアンサー

text

1.\a.exe ではなく、./a.exe でしょう。

投稿2021/04/19 02:57

編集2021/04/19 03:02
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

progokina8

2021/04/19 03:03

返信有り難うございます。 残念ながら、どちらで実行しても正しく出力されませんでした。
yuki23

2021/04/19 04:02

質問文に書いてあることがおかしいです。 コマンドプロンプトなら頭に $ ではなく > のはず。 さらに ./a.exe を実行したら「'.' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」というエラーが出るはず。なぜそれを書かない?
progokina8

2021/04/19 04:12

>コマンドプロンプトなら頭に $ ではなく > のはず。 すみません、自分のミスでした。 しかし、エラーメッセージは出ませんでした。
yumetodo

2021/04/19 12:34

ちょっとその実行の様子をスクリーンショットを撮って貼ってもらえますか?
progokina8

2021/04/19 13:15

了解です。 本文に添付しましたので、ご確認お願い致します。
yumetodo

2021/04/19 14:35 編集

g++ -o a.exe -v -Wall -Wextra -pedantic -std=c++17 demo.cpp してみてください
progokina8

2021/04/20 01:02 編集

遅くなりすみません。 非常に長い文字列(パスなど)が出力された後、./a.exeにて実行するとJohnが無事出力されました。 (g++ -o a.exe -v -Wall -Wextra -pedantic -std=c++17 demo.cppの実行結果を本文に追記しました。) 有り難うございます。 度々申し訳ないのですが、このコンパイル方法で出力された理由は何故だか分かりますか? 重複した部分や存在しない部分を無視しているように見えますが...。
yumetodo

2021/04/20 12:17

いやそれはヘッダーファイル探索のログなので、いくつかの候補で検索しているよってだけの話です。 なんでこれでうまくいくのかはまあ謎なのですが・・・。 原則論として出力ファイル名(-o <output>)は最初に指定してその他のオプションをおいて、最後に入力ファイルを置くとうまくいきやすいです。
progokina8

2021/04/20 12:33

有り難うございます。 オプションについても勉強してみたいと思います。 何度もコメントして頂き感謝しています。
guest

0

(C++) | ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO

ふつーに実行できますね。
単にあなたの環境設定ミスでは

投稿2021/04/19 02:16

y_waiwai

総合スコア88049

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

progokina8

2021/04/19 03:00

返信有り難うございます。 環境設定ミスだと思うのですが、どこが間違っているのか調べても分かりづらかったので伺いました。 理解不足で申し訳ないです。
y_waiwai

2021/04/19 03:08

ならどういうコマンド操作でビルドして、どういうコマンド操作で実行させてるのかを説明しましょうよ
progokina8

2021/04/19 03:30

「発生している問題」の項目に載せてあるのがコマンド操作です。 コマンドプロンプトに打ち込みました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問