2011-08-30 176 views
0

在下面的代碼中,我限制寫入文件的字符數必須小於15,&寫入的字符恰好爲15(根據需要),當我讀迴文件時。第一個WHILE循環未按要求工作,必須跳過&停止接收來自用戶的輸入,當計數器變量具有值15, 但它尚未接收來自用戶的輸入時,直到 他/她沒有按下輸入文件輸入輸出

#include<iostream> 
#include<conio.h> 
#include<string.h> 
#include<fstream> 

using namespace std; 

int main() 
{ 
    int i=0; 
    ofstream out("my_file",ios::out|ios::binary); //'out' ofstream object 
    char ch1; 

while(i<15)      //receiving input even when i>15,till 'enter' IS pressed 
{ 
    cin>>ch1;  
    out.put(ch1); 
    i++; 

} 

out.close(); 

char ch; 
ifstream in("my_file"); //'in' ifstream object 

while(1) 
{ 
    in.get(ch); 
    if(in)cout<<ch; 
} 
in.close(); 
_getch(); 
return 0; 
    } 

回答

1

標準I/O功能只有在按下Enter後才起作用。爲了獲得理想的效果,您需要使用_getch,它立即讀取每個符號。注意_getch不可移植。

+0

人們總是可以使用平臺特定的方法。在某些Windowing/GUI系統中,單個字符通過消息發送。 –

1

輸入幾乎總是行緩衝,所以當程序從命令行讀取時,它幾乎總是阻塞,直到輸入處有整行可用爲止。