输入输出流

 例1:

 

#include <iostream>
using namespace std ;
int main( ){
     char test1[1001], test2[1001];
     cin.getline(test1,1000,'a');
     cout <<test1;
     cin.getline(test2,1000,'a');
     cout <<test2;
     cout << endl;
     return 0 ;
}

 

输入:
qwer
add
ass

 

输出:
qwer
dd

 

 

1.cin.getline允许从输入流中读取多个字符,并且 允许指定输入终止的字符(默认是换行字符)。在读取完成后,从读取的内容中删除该终止字符。
cin.getline(char * str, int m, char cEnd);
cin.getline(char * str, int m);// char cEnd=‘\n’

 

例 2:

   

#include <iostream>
#include <stdio.h>
using namespace std ;
int main( ){
   char test1[1001], test2[1001],test3[1001];
   cin.getline(test1,1000,'a');
   scanf("%s",test2);
   cin.getline(test3,1000,'a');
   cout <<"test1: " <<test1<<endl;
   cout <<"test2: " <<test2;
   cout << endl;
   cout <<"test3: " <<test3<<endl;
   return 0 ;
}

 

 

输入:
qwe
abg
dfd
da

     不同編譯軟件答案不一致:

   

Visual Studio .Net/GCC/部分Visual C++ 6.0环境输出
test1: qwe

test2: bg
test3: 
dfd
d
Press any key to continue

 

   

部分Visual C++ 6.0环境输出
test1: qwe

test2: dfd
test3: bg
d
Press any key to continue

  

   原因:混用cin和scanf造成的错误

 

例    3:

 

#include <stdio.h>
#include <iostream>
using namespace std ;
int main( ){
   char test1[10001], test2[1001],test3[1001];
   cin.getline(test1,10,'a');
   scanf("%c",&(test2[0]));
   cin.getline(test3,1000,'a');
   cout <<"test1: " <<test1;
   printf("test2: %c",test2[0]);
   cout << endl;
   cout <<"test3: " << test3 << endl;
   return 0 ;
}

  

输入:
qwert
abbb
cccc
acbb

 

Visual Studio .Net/GCC/部分Visual C++ 6.0环境输出
test1: qwert
test2: b
test3: bb
cccc

 

部分Visual C++ 6.0环境输出
test2: ctest1: qwert
    
test3: bbb

  原因:混用cin和scanf、cout和printf造成的错误
    结论:不要混用iosteam和stdio的输入输出函数。

 

 

   

 

 

你可能感兴趣的:(输入输出流)