2017-11-03 6 views
-2

変数nameのデータを出力ファイルに保存する場合は、data.txtは簡単ですか?ファンクションでベクトル配列変数を使用する

いや、私がファイルを.exeのルート"."ディレクトリをスキャンして、十分なcmd簡単にそれらを出力しておりますので、なぜ私は、同様のファイルに単に出力に苦労していますか?

私はthisthisリンクを見ました。彼らは少し助けました。

ご意見やアドバイスをいただければ幸いです。 main()

オリジナルバージンcode

#include "stdafx.h" 
#include <iostream> 
#include <vector> 
#include <string> 
#include <experimental/filesystem> 
#include <fstream> 

using namespace std; 

std::vector<std::string> get_filenames(std::experimental::filesystem::path path) 
{ 
    namespace stdfs = std::experimental::filesystem; 
    std::vector<std::string> filenames; 
    const stdfs::directory_iterator end{}; 
    for (stdfs::directory_iterator iter{ path }; iter != end; ++iter) 
    { 
     if (stdfs::is_regular_file(*iter)) 
      filenames.push_back(iter->path().string()); 
    } 
    return filenames; 
} 



void Dirloop(){ 
    for (const auto& name : get_filenames(".")) std::cout << name << '\n'; 
} 


void Outfile() { 

    std::ofstream outputFile("data.txt", std::ios::out); 
    outputFile << name << std::endl; 
    outputFile.close(); 
    cout << "Generated data.txt!\n"; 
} 

int main() 
{ 
    Dirloop(); 
    Outfile(); 
    std::getchar(); 
    return 0; 
} 
+0

'outputFile << name << std :: endl;'名前はどこから来ますか?明らかに不可能なコードの修正に関する提案をするのは難しいです。 – user4581301

+0

'DirLoop'関数で' name'を宣言しましたが、 'Outfile'でそれを使用しようとしています。 – Barmar

+0

'Outfile'を' name'をパラメータとするように変更し、 'Dirloop'から呼び出します。また、 'std :: ios :: app'モードでファイルをオープンして、上書きする代わりにファイルに追加するようにしてください。 – Barmar

答えて

1

コールget_filenames。次に、ベクトルを引数としてDirloop()Outfile()の両方に渡すことができます。

void Dirloop(const std::vector<std::string> &filenames){ 
    for (const auto& name : filenames) { 
     std::cout << name << '\n'; 
    } 
} 


void Outfile(const std::vector<std::string> &filenames) { 

    std::ofstream outputFile("data.txt", std::ios::out); 
    for (const auto& name : filenames) { 
     outputFile << name << '\n'; 
    } 
    outputFile.close(); 
    cout << "Generated data.txt!\n"; 
} 

int main() 
{ 
    std::vector<std::string> filenames = get_filenames("."); 
    Dirloop(filenames); 
    Outfile(filenames); 
    std::getchar(); 
    return 0; 
} 
+0

ありがとう、私はエラーエラーが発生します:C2440: '初期化':から変換できません... VC 2015のアイデア?私は変換文字がないと思っていますか? – MALKAVIAN

+0

Typo、 'get_filenames'は' get_filenames() 'であったはずです。 – Barmar

関連する問題