2017-06-04 5 views
-2

私はc plus plusを使ってファイルを読み書きする方法を学び、txtファイルの最初の行をコピーする際に問題が発生しました。私は以下のtxtファイルを貼り付けた。ご覧のように、最初の行には2つの文字列があり、下の行にはさまざまな種類があります。行1の文字列とそれ以降の整数なので、列2の型はどうやって宣言しますか?文字列としてすべてを宣言してファイルの内容をoutput.txtにコピーすることはできますが、私はさまざまな種類の処理方法が不思議でした。あなたの助けが大変ありがとうございます。C plusプラス異なるタイプのI/Oコピーtxtファイル

input.txtファイル:

firstname value 
Jack 1 
Jacob 3 
Jerry 2 
Jeremy 3 
Joseph 3 
Jim 3 

私は思うので、タイプの矛盾の空白output.txtファイルを取得しています。

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

string fname; 
int value; 

using namespace std; 

int main() { 
    ifstream in_file; //variable name 
    in_file.open("input.txt"); 
    if (in_file.fail()){ 
     cout << " The file is not found " << endl; 
     return 1; 
    } 


    ofstream out_file; 
    out_file.open("output.txt"); 
    while (in_file >> fname >> value){ 
    out_file << fname << " " << value << endl; 
    }; 


} 
+1

ただ、別の方法で最初の行を処理し、二つの文字列として、文字列とintではありません。 – ForceBru

答えて

0

おかげで、これを達成するために、より効率的な方法がありますなら、私に知らせてくださいが、これは、私のために働い@ForceBru:

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

string fname; 
string col2; 
int lname; 

using namespace std; 

int main() { 
    int count=0; 
    ifstream in_file; //variable name 
    in_file.open("input.txt"); 
    if (in_file.fail()){ 
     cout << " The file is not found " << endl; 
     return 1; 
    } 


    ofstream out_file; 
    out_file.open("output.txt"); 

    if (count==0){ 
     in_file >> fname >> col2; 
     out_file << fname << " " << col2 << endl; 
     count++; 
    } 

    while (in_file >> fname >> lname){ 
     out_file << fname << " " << lname << endl; 
    }; 



} 
+0

なぜ最初の行にカウントが必要ですか?値も必要ありません。単純なgetlineは値をスキップします。 –

+0

カウントは最初の行の文字列値を指定するためのものですが、getline – st4rgut

+0

を実装する方法がわかりません。そして、カウントは何を知っていますか、それが最初の行ですか? getlineは実装しないでください。 –

関連する問題