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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

C++

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

Q&A

解決済

3回答

793閲覧

txtファイルを読み込んでその通りに表示させたい

pe-tti

総合スコア10

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

C++

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

0グッド

0クリップ

投稿2020/04/29 05:15

編集2020/04/29 05:22

c++

1 2 3 4コード 5#include "pch.h" 6#include <fstream> 7#include <iostream> 8#include <string> 9#include<sstream> 10#include<algorithm> 11 12 13 14 15using namespace std; 16 17 18 19int main(int argc, char*argv[]) 20 21{ 22 if (argc != 2) 23 { 24 cout << "パラメータの数が違います。" << endl; 25 return 1; 26 27 } 28 29 30 ifstream fin(argv[1]); 31 32 if (!fin) 33 { 34 cout << "ファイルをオープンできませんでした" << endl; 35 return 1; 36 } 37 38 39 const int num = 200; 40 string test[num]; 41 int i=0; 42 43 44 45 46 while (!fin.eof()) 47 { 48 49 50 fin >> test[i]; 51 cout << test[i] << endl; 52 i++; 53 54 55 } 56 57 fin.close(); 58 59 60 61 62}

a b
1 2
3 4
5 6
上記のテキストファイルを読み込んでその通りに出力できるようにしたいのですが、
実行すると
a
b
1
2
3
4
5
6
のようになります、どの様に改善すればよいでしょうか?

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

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

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

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

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

guest

回答3

0

ベストアンサー

fin >> test[i]; --> getline(fin, test[i]);
とか?

投稿2020/04/29 05:26

pepperleaf

総合スコア6383

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

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

pe-tti

2020/04/29 05:39

ご回答ありがとうございます。 そのように変えてみたのですが、 ・オーバーロードされた関数"getline"のインスタンスが引数リストと一致しません。 ・class "std::basic_ifstream<char, std::char_traits<char>>" にメンバー "test" がありません とエラーが出てしまいました。 どの様に改善すればよいでしょうか?
pepperleaf

2020/04/29 05:51

手元だと、この一行だけ、変更で OKだったのですが、、 (VC++2019) エラーメッセージが気になるのですが、、、 fin の後ろは、カンマ(,)で区切られていますか?
episteme

2020/04/29 06:06

カンマがドットになってるポいね。
pe-tti

2020/04/29 06:50

直りました!! お手数おかけしました 本当にありがとうございました
guest

0

fin.eof() は一つ前の入力処理が失敗したことを示すものであって、
これからの入力処理が成功することを保証するものではありません。

fin >> test[i]; でも、getline(fin, test[i]); でも失敗して、
cout << test[i] << endl; で余分な改行が出てしまいます。

C++

1#include <iostream> // cout 2#include <fstream> // ifstream 3#include <string> // getline 4using namespace std; 5 6int main(int argc, char*argv[]) 7{ 8 if (argc != 2) { 9 cout << "パラメータの数が違います。\n"; 10 return 1; 11 } 12 ifstream fin(argv[1]); 13 if (!fin) { 14 cout << "ファイルをオープンできませんでした\n"; 15 return 1; 16 } 17 string test; 18 while (getline(fin, test)) 19 cout << test << endl; 20}

質問のコードには連続する複数の空行がありますが、何の意味があるんですか?

投稿2020/04/29 06:59

編集2020/04/29 07:02
kazuma-s

総合スコア8224

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

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

0

a.cpp

cpp

1#include <fstream> 2#include <iostream> 3 4using namespace std; 5 6int main(int argc, char* argv[]) 7{ 8 if (argc != 2) 9 { 10 cout << "パラメータの数が違います。" << endl; 11 return 1; 12 } 13 14 ifstream fin(argv[1]); 15 if (!fin) 16 { 17 cout << "ファイルをオープンできませんでした" << endl; 18 return 1; 19 } 20 21 while (!fin.eof()) 22 { 23 char c; 24 fin.get(c); 25 cout << c; 26 } 27 fin.close(); 28} 29```cpp

投稿2020/04/29 05:59

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問