2016-08-10 42 views
1

基本上,我試圖在文本文件中進行流式處理並將同一信息流出到另一個文本文件中。流入和流出C++中的文本文件

但是,它給了我奇怪的新線。

例TXT改爲測試:

testing this is a test to see if this actually works 

hopefully! 
test 



test 

test 

這是它給我測試後的輸出:

testing this is a test to see if this actually works 
hopefully!test 


test 
test 

我所要的輸出是一樣的輸入。但我不確定我做錯了什麼。一直堅持了幾個小時,現在,哈哈。

這裏是我的代碼:

string input, name, content; 
cout << "Enter input name and extension (Example: hi.txt)\n"; 
cin >> input; 

ifstream file (input.c_str()); 

if (file.is_open()) { 
    cout << "Enter output name and extension (Example: hi2.txt)\n"; 
    cin >> name; 

    ofstream output(name.c_str()); 

    while (getline(file, content)) { 
     output << content; 

     if (content == "") { 
      output << "\n"; 
     } 
    } 
} 
+1

你嘗試'如果(內容==「\ n」)'? –

+0

不要使用getline()逐行執行它,而應考慮使用get()來更大塊地讀取它(即使是整個事物),而不用擔心換行符。另外,你可以調用'getline()'作爲'file.getline(content)'並且保持更一致的C++ - ish。 –

回答

2

std::getline忽略的分隔符,默認情況下是\n時,它讀取一行。所以,當它讀取

testing this is a test to see if this actually works\n 

content竟然會被

testing this is a test to see if this actually works 

注意缺少換行符。這就是爲什麼有每行:)

你必須補充的是丟棄的分隔符之後的一個新的生產線丟失:

output << content << '\n'; //Adds the discarded '\n' delimiter 
+0

哦!這就說得通了!非常豐富。謝謝! :d – Dandy