2017-07-23 56 views
-1

C++中的新增功能和我試圖複製在我打開一個.csv文件到我想要創建的另一個.csv文件後在控制檯上讀取的值。不幸的是,它只複製最後一個值,而不是整個。任何幫助?非常感謝!C++將控制檯值複製到csv

int main() 
{ 
ifstream filetocopy("ecommerce.csv"); 
int d; 
while(filetocopy>>d){ 
cout << d << endl;} 

ofstream numbers("testing.csv"); 
     numbers << d << endl;  
} 

回答

0

這裏有兩個問題。

首先,您沒有創建要輸出的ofstream,直到您已經使用並丟棄了大部分數據。

其次,在while循環中,您所做的只是將數據寫入標準輸出而不是文件。

要糾正這個問題,您需要在while循環之前移動ofstream初始化,並將numbers << d << endl;移動到循環中。

+0

感謝答案。讚賞。是的,其實這就是我所做的。 – MGs

-2

想想你的ifstream就像一箇舊的錄像機磁帶。當你用while循環打印字符時

while(filetocopy>>d){ 
cout << d << endl;} 

你的ifstream完成「玩」。每個循環都會獲取磁帶的新框架並將其打印出來。所以,磁頭是最後,現在d只是舉行信用的最後一幀。所以當你把它寫入你的新csv時,這是它剩下的唯一值。

請不要先打印出所有這些值。

2

明顯的問題與你的方法:

1)你讀整個輸入文件,這意味着你只寫了最後一個值到輸出文件後,您創建的輸出文件。

2)即使你修正了1)你仍然會以錯誤的順序將csv值寫入輸出文件。建議:逐行閱讀 - >在控制檯上打印行 - >將行寫入文件。

這裏有一個簡單的解決問題的方法(只是舉個例子,你可以改善它):

#include <iostream> 
#include <fstream> 
#include <string> 

int main() { 

    std::ifstream filetocopy("ecommerce.csv"); 
    std::ofstream numbers("testing.csv"); 
    std::string line; 

    while(std::getline(filetocopy, line)) { 
     std::cout << line << std::endl; 
     numbers << line << std::endl; 
    } 

    return 0; 
} 
+0

謝謝你的回答和「getline」提示!讚賞。 – MGs