修改cin的输入使得支持获取一行的处理 #include "stdafx.h" #include <iostream> #include <windows.h> using namespace std; BOOL InputInt(int& nValue); BOOL InputString(char* pszValue, int nLen); int _tmain(int argc, _TCHAR* argv[]) { int a = 0; char sz[MAX_PATH] = {0}; InputInt(a); cout << "a = " << a << endl; InputString(sz, sizeof(sz)); cout << "sz = " << sz << endl; return 0; } BOOL InputInt(int& nValue) { while (TRUE) { cout << "please input a number:" << endl; cin >> nValue; if (cin.fail()) { cout << "input failed!" << endl; cin.clear(); cin.get(); } else { break; } } return TRUE; } BOOL InputString(char* pszValue, int nLen) { if (NULL == pszValue) { return FALSE; } //初始化 memset(pszValue, 0, nLen); while (TRUE) { cout << "please input a string: " << endl; cin.getline(pszValue, nLen); if(cin.fail() || (0 == strlen(pszValue)) ) { cout << "input error" << endl; cin.clear(); cin.get(); } else { break; } } return TRUE; }