在C++中,輸入流(如cin)可能會遇到各種問題,如輸入錯誤、格式不正確等
使用std::ios_base::sync_with_stdio(false);
和std::cin.tie(NULL);
來加速輸入輸出。
在程序開始時添加這兩行代碼,可以提高I/O性能。
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
檢查輸入流的狀態。
使用std::cin.fail()
和std::cin.bad()
來檢查輸入流是否遇到錯誤。
if (std::cin.fail()) {
std::cin.clear(); // 清除錯誤標志
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略錯誤輸入
}
使用std::getline()
讀取整行輸入。
當輸入包含空格或換行符時,使用std::getline()
比std::cin
更合適。
std::string input;
std::getline(std::cin, input);
使用std::istringstream
解析輸入。
如果需要從字符串中解析多個值,可以使用std::istringstream
。
std::string input;
std::getline(std::cin, input);
std::istringstream iss(input);
int a, b;
iss >> a >> b;
格式化輸出。
使用std::setprecision()
和std::fixed
來格式化輸出浮點數。
double pi = 3.14159265358979323846;
std::cout << std::fixed << std::setprecision(5) << pi << std::endl;
使用std::endl
或\n
來換行。
在需要換行的地方使用std::endl
或\n
,但要注意std::endl
會刷新輸出緩沖區,可能導致性能下降。
std::cout << "Hello, World!\n";
使用std::left
、std::right
和std::internal
來設置輸出對齊方式。
int width = 20;
std::cout << std::left << std::setw(width) << "Hello, World!" << std::endl;
使用std::boolalpha
來輸出布爾值為文本。
bool flag = true;
std::cout << std::boolalpha << flag << std::endl; // 輸出 "true" 或 "false"
使用std::hex
、std::oct
和std::dec
來設置輸入輸出的進制。
int num = 42;
std::cout << std::hex << num << std::endl; // 輸出 "2a"
使用std::fixed
和std::scientific
來設置浮點數的輸出格式。
double pi = 3.14159265358979323846;
std::cout << std::fixed << std::setprecision(5) << pi << std::endl; // 輸出 "3.14159"
通過這些技巧,可以更有效地調試C++中的輸入流問題。