2011-07-23 122 views
-1
#include <iostream> 
#include <string> 
#include <fstream> 
#include <cstring> 

using namespace std; 

int main(){ 
    char a; 

    cout << "give me the filename: "; 
    cin >> filename; 

    ifstream caroll; 
    caroll.open(filename.c_str()); 

    while (a=caroll.get() && !caroll.eof()){ 
    cout << a << " "; 
    } 

    caroll.close(); 
} 

我得到的輸出中充滿了奇怪的字符。他們就像填滿2 0和2 1的小廣場。ifstream輸出上奇怪的字符

+0

這輸出看起來像是一個調試器會給。 –

+0

輸出正常,並在調試模式下預期(您沒有提及 - 你應該有!)。另外,什麼是所有的空白? –

+0

我編輯,因爲我不能顯示這些字符。見上面 –

回答

5

請打開您的編譯器警告級別。這裏有一個錯誤:

while (a=caroll.get() && !caroll.eof()) { 

這被解釋爲:

while (a = (caroll.get() && !caroll.eof())) { 
     ^       ^

您需要添加分配周圍括號:

while ((a = caroll.get()) && !caroll.eof()) { 
    ^   ^

GCC警告說這件事。

(注:請張貼代碼編譯,filename是不是你的樣品中聲明的,你包括cstring時,你應該包括string。)

+0

這就是它。謝謝.... –