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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C++

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

Q&A

解決済

2回答

909閲覧

VScode,C++にてファイル操作ができない

motch_misa_ore

総合スコア15

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

C++

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

0グッド

0クリップ

投稿2023/01/03 13:21

前提

C++にて、txtファイルへの文字列の書き込みをしようとしています。ライブラリのfstream.hを取り入れているのですが、ofstreamやfoutが認識されません。

実現したいこと

pmonf-1.txtというファイルへ、単に以下の数値を入力するだけです。
long型整数172250,112007,111539,88032,63753,161787,275029,62895,160550,126734

発生している問題・エラーメッセージ

以下の通り、ofstreamやfoutが認識されません。

PS C:\Users\motch\java> g++ filecontrol_C++_20230102.cpp -o filecontrol_C++_20230102 ; .\filecontrol_C++_20230102 filecontrol_C++_20230102.cpp: In function 'int main()': filecontrol_C++_20230102.cpp:10:17: error: 'endl' was not declared in this scope fout<<x[i]<<endl; ^~~~ filecontrol_C++_20230102.cpp:10:17: note: suggested alternative: In file included from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\istream:39:0, from c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\fstream:38, from filecontrol_C++_20230102.cpp:1: c:\mingw\lib\gcc\mingw32\6.3.0\include\c++\ostream:590:5: note: 'std::endl' endl(basic_ostream<_CharT, _Traits>& __os) ^~~~ .\filecontrol_C++_20230102 : 用語 '.\filecontrol_C++_20230102' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されて いることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:64 + ... 20230102.cpp -o filecontrol_C++_20230102 ; .\filecontrol_C++_20230102 + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (.\filecontrol_C++_20230102:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\Users\motch\java>

該当のソースコード

C++

1#include<fstream> 2#include<stdlib.h> 3 4int main(void){ 5 long x[]={172250,112007,111539,88032,63753,161787,275029,62895,160550,126734}; 6 char fname[]="pmonf-1.txt"; 7 std::ofstream fout(fname); 8 int i,n=10; 9 for(i=0;i<n;i++) 10 fout<<x[i]<<endl; 11 fout.close(); 12}

試したこと

教科書のサンプルソースコードの写しに間違いがないか確認したり、試しにstdlib.hを入れたりしてみたのですがなかなかうまくいきません。

以上よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

endlstd 名前空間にあります。 endl のかわりに std::endl としてください。

ただし言語仕様ではこれらの名前について「グローバル名前空間で宣言されてから std に挿入されるかどうかは未規定である」という一文があり、つまりはグローバルに endl があってもよい (あることを要求はしない) と認めています。

そういう処理系が許されていて実際に存在もするので、あまり厳密ではない資料のコードだとそのままでは動かないということもよくあります。


余談ですが stdlib.h などの C に由来するヘッダの利用は非推奨です。 (C++ 用語で非推奨というのは将来の規格改定で削除される候補であるという意味です。)

cstdlib を用いるのが好ましいでしょう。

投稿2023/01/03 13:45

SaitoAtsushi

総合スコア5437

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

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

0

ベストアンサー

エラーメッセージにもあるように、endlstd名前空間に属しますので、std::endlと明記するか、using std::endl;のように宣言する必要があります。

投稿2023/01/03 13:37

maisumakun

総合スコア145121

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

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

motch_misa_ore

2023/01/03 13:42

ありがとうございました!できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問