例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的输入输出函数。