2017-04-20 5 views
0
#include "stdafx.h" 
#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
string line = "test"; 
ifstream myfile("example.txt"); 
myfile.open("example.txt"); 

if (myfile.is_open()) 
{ 
    cout << line << "\n"; 
    cout << "File Opened\n"; 
    getline(myfile, line); 
    cout << line; 
    while (getline(myfile, line)) 
    { 
     cout << line << '\n'; 
     cout << "test"; 
    } 
    myfile.close(); 
} 

else cout << "Unable to open file"; 

//return 0; 
//getchar(); 
} 

これが答えられても、私が必要とするものに非常に近い答えが見つかっても、私はこの特定の問題に対する答えを見つけることができません。C++(Visual Studio):.txtファイルからの入力を読み取ろうとしているときに何も受け取らない

私はVisual Studioを使い慣れていませんが、過去にはC++で手を加えました。私はテキストファイルからデータを読み込もうとしていますが、(今のところ)単純にcoutを使ってそれを出力します。しかし、私は結果を見ていないよ。

最初は間違った場所に自分のtxtファイルがあると思っていました。当初、「ファイルを開くことができません」という行が表示され、ファイルを開くことができなかったことを示しています。だから、私はそれを移動し、Visual Studioがどこにファイルを置くかを知りました。

これで、「File Opened \ n」という行が画面に表示され、その後は何も表示されません。私はgetl​​ineを間違って使っているかもしれないと思ったが、ファイル入力 "myfile"を "cin"に置き換えると、getlineは一日中キーボード入力で楽しく読めるので、それもそうではない。

私は文字列の値を出力するいくつかのtest coutステートメントを入れました。最初のものは "テスト"をそのまま出力します。それから私はその文字列変数にtxtファイルの行を読み込み、私が再びそれを覚えると何も得られません。それは空の文字列です。

また、 "cout < <" test ";"ループ内からはどちらも印刷されません。だから、ループは起こっていない、そうだ。

私が知る限り、プログラムは私のテキストファイルexample.txtを見つけることができます。しかし、それは実際に内容を見ていない。これは、これは

第二行目で、最初の行

ある

」:

次のようにテキストファイルの内容(と私はプリントアウトするプログラムをたい)があります

第四

フィフス」

何かすべての助けが大歓迎です。

答えて

0

あなたのファイルを開いてみてください。 "myfile.open(" example.txt ");"あなたがファイルパスを与えなければ私は奇妙なことが起こることが分かった。 myfile.open( "c:\ test \ example.txt"); は私がコードに行った調整で、夢のように動作します。

+0

アイデアをお寄せいただきありがとうございます。残念ながら、これはどちらかといえないようです。私はC++に(\\の代わりに\\を使用するのを忘れた場合の短いエラーの後で)ファイルを見つけることができましたが、完全な明示的なファイルパスを使用しても、前と同じ出力が得られます。編集:私はちょうど考えていた - 私は正しくmyfile.openを使用していますか?ファイルパスを2回入力する必要があるのか​​どうかわかりません。私はもう少しそれを研究するつもりです、それは多分です。 – FEF

+0

それは変です。私はコードに調整を加え、うまくいくと言ったようです。 – farmtireguy

+0

私はあなたを信じています。このコードは特にオリジナルではありません。基本的には、私がオンラインで見たすべてのチュートリアルでファイル入力の読み方について言われているものを改変したものなので、間違ったことがわかりません。 – FEF

1

何が悪かったのは、この行です:

ifstream myfile("example.txt"); 

私は理由を正確に知りませんが、私がダウンして、次の行(myfile.open(「EXAMPLE.SQL」)で開くファイルを指定しますので、 ;)、ifstream宣言でファイルパスを指定すると問題が発生しました。

他の人がコードがうまく動作していると言っているので、私はそれを完全には得ていません。しかし、これはとにかく、動作するようです。

このソリューションを使用しない理由がある場合は、教えてください。

+0

それは微妙だった、私は冗長な '開いた 'ことに気付かなかった。ファイルが既に開いていたために失敗した可能性がありますが、 'is_open'がtrueを返すようにオブジェクトを無効な状態にしました。 –

関連する問題