[問題] 把兩個檔案merge 對vector有些疑問
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
codeblocks + gcc
Release 10.05 gcc 4.4.1 Windows/unicode
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我現在有兩個檔案,我想把他們合成一個, 開完檔案之後一次個別讀一行出來
比較大小,比較小的先寫到檔案裡面,在抓下一行
直到兩個檔案都跑完
餵入的資料(Input):
有三個欄位
第一個欄位是要比較的值
後面兩個欄位之後才會用到這邊不需要特別去比較大小
只要比完第一個欄位,小的先寫進去,遇到一樣大的就先寫第一個檔案讀到的內容
http://ppt.cc/Jvtw
http://ppt.cc/5(3L
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream tmp1, tmp2;
string CRC_1,CRC_2;
int times_1, times_2, urlnum_1, urlnum;_2
/* open file 0.txt and 1.txt*/
tmp1.open("0.txt");
if(tmp1.fail())
{
cout<<"Input file opening failed.\n";
exit(1);
}
tmp2.open("1.txt");
if(tmp2.fail())
{
cout<<"Input file opening failed.\n";
exit(1);
}
/*
這邊想要一次抓一行或是用 tmp1>>CRC>>times>>urlnum 串接的方式把東西讀進來
我卡在一個地方是 這邊要怎麼在抓東西的時候判斷說這個檔案已經抓完了
假如0.txt比較早抓完,表示之後就不用在比較了 直接把1.txt剩下的部分都寫進去檔案
裡面
*/
/* 虛擬碼
if(tmp1沒結束)
tmp1>>CRC_1>>times_1>>urlnum_1
if(tmp2沒結束)
tmp2>>CRC_2>>times_2>>urlnum_2
if(tmp1>=tmp2)
tmp1寫入檔案,抓下一行
else
tmp2寫入檔案,抓下一行
repeat直到兩個檔案都跑完
*/
/* 實際的程式碼位置
//寫檔案開檔的部分
ostringstream oss;
oss.str("");
oss << "./tmp/temp" << i << ".txt";
string s2 = oss.str();
ofstream fo;
fo.open(s2.c_str(),ios::out);
//卡在這邊怎麼先處理說 檔案0抓一行 檔案1抓一行 之後比較 繼續抓
while(tmp1>>CRC_1>>times_1>>urlnum_1)
{
cout<<CRC_1<<" "<<times_1<<" "<<urlnum_1<<endl;
}
if(tmp1 >= tmp2)
fo<<CRC_1<<" "<<times_1<<" "<<urlnum_1<<endl;
else
fo<<CRC_2<<" "<<times_2<<" "<<urlnum_2<<endl;
*/
return 0;
}
//程式碼 http://ppt.cc/f-Po
補充說明(Supplement):
現在是想先做兩個檔案的merge
因為之後檔案可能會很大,所以不打算把東西全部讀進來
一次都只抓一行去比較
請大家給我一點意見,怎麼去處理判斷東西抓完的部分給我一點建議
感謝大家
--
我不是宅 我只是比較居家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 108.21.124.118
推
04/01 21:35, , 1F
04/01 21:35, 1F
→
04/01 21:43, , 2F
04/01 21:43, 2F
→
04/01 21:53, , 3F
04/01 21:53, 3F
→
04/01 21:54, , 4F
04/01 21:54, 4F
→
04/01 22:05, , 5F
04/01 22:05, 5F
→
04/01 22:06, , 6F
04/01 22:06, 6F
→
04/01 22:07, , 7F
04/01 22:07, 7F
→
04/01 22:08, , 8F
04/01 22:08, 8F
推
04/01 22:08, , 9F
04/01 22:08, 9F
→
04/01 22:08, , 10F
04/01 22:08, 10F
→
04/01 22:09, , 11F
04/01 22:09, 11F
→
04/01 22:17, , 12F
04/01 22:17, 12F
→
04/01 22:37, , 13F
04/01 22:37, 13F
→
04/01 22:39, , 14F
04/01 22:39, 14F
→
04/01 22:40, , 15F
04/01 22:40, 15F
→
04/01 22:45, , 16F
04/01 22:45, 16F
→
04/01 22:45, , 17F
04/01 22:45, 17F
→
04/01 22:46, , 18F
04/01 22:46, 18F
→
04/01 22:46, , 19F
04/01 22:46, 19F
→
04/01 22:48, , 20F
04/01 22:48, 20F
→
04/01 22:49, , 21F
04/01 22:49, 21F
→
04/01 22:49, , 22F
04/01 22:49, 22F
→
04/01 22:55, , 23F
04/01 22:55, 23F
→
04/01 22:57, , 24F
04/01 22:57, 24F
→
04/01 23:10, , 25F
04/01 23:10, 25F
→
04/01 23:11, , 26F
04/01 23:11, 26F
→
04/01 23:14, , 27F
04/01 23:14, 27F
→
04/01 23:16, , 28F
04/01 23:16, 28F
→
04/01 23:18, , 29F
04/01 23:18, 29F
→
04/01 23:29, , 30F
04/01 23:29, 30F
我現在遇到一個問題
我有很多的檔案要兩兩合在一起
但是我現在程式會掛掉 我覺得可能是vector的部分有問題
直行到後面就直接掛掉了,所以我看不太出來錯誤訊息
不過我覺得是vector出錯了
我想要把東西兩兩合併 到最後只會剩下一個檔案
不過目前好像有問題
vector不能動態的一直在後面push_back東西進去嗎?? 還是說這邊改用queue
會比較好一點
謝謝大家
http://codepad.org/iTKZ2o7q code
http://ppt.cc/beWl list.txt
※ 編輯: rock1985 來自: 108.21.124.118 (04/02 00:26)
→
04/02 13:26, , 31F
04/02 13:26, 31F
→
04/02 13:26, , 32F
04/02 13:26, 32F