C ++将vector <string>的已排序内容写入文件

时间:2015-05-10 05:15:37

标签: c++ string sorting vector

这当前读取.txt文件并对内容进行排序。我试图让它将矢量的那些排序内容写入文件。目前它只写一行,我怎么能把它放在新文件中的所有行?非常感谢。 -Kaiya

x(cond1) = (beta + 1 - v(cond6))/rho;

5 个答案:

答案 0 :(得分:4)

ofstream newfile ("newfile.txt");
for (string &s : fileLines)
{
   cout << s << " ";
   newfile << s << " ";
};

答案 1 :(得分:2)

默认情况下,为每个循环迭代创建newfile会覆盖文件的内容。

在最后一个循环之前打开newfile,或在循环中以追加模式打开它。

答案 2 :(得分:1)

这是因为你在循环的每次迭代中都在创建一个新文件!     ofstream newfile(&#34; newfile.txt&#34;); 应该在循环之前写出来。

ofstream newfile ("newfile.txt");
for (string &s : fileLines)
{
   cout << s << " ";
   newfile << s << " ";
};

答案 3 :(得分:1)

ofstream newfile ("newfile.txt");

copy(fileLines.begin(), fileLines.end(), ostream_iterator<string>(newfile, " ") );

答案 4 :(得分:0)

这是我的完整代码,感谢Xiaotian Pei的帮助。

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <fstream>
using namespace std;
inline void keep_window_open() {char ch; cin>>ch;}

    int main()
    {
        string line;
        ifstream myfile("weblog.txt");
        vector<string> fileLines;

        if (!myfile) //test the file
        {
            cout << "Unable to open the file" << endl;
            return 0;
        }

        while (getline(myfile, line))
        {
            fileLines.push_back(line);
        }

        sort(fileLines.begin(), fileLines.end()); //sorting string vector

        ofstream newfile ("newfile.txt"); //write to new file
        for (string &s : fileLines)
        {
            cout << s << " ";
            newfile << s << " ";
        }

        return 0;
    }