簡體   English   中英

在 C++ 中檢查 cin.fail() 中的字符串變量時出錯

[英]Error checking cin.fail() for a string variable in C++

#include <iostream>
using namespace std;

int main()
{
  int i;
  cout << "Enter: " << endl;
  cin >> i;

  cout << cin.fail() << endl;
}

這是我用於錯誤檢查的典型實現,以確保我輸入了有效的輸入,這就是我學到的。 我上面代碼的問題是,如果我輸入“4d”,它會將 4 存儲在變量“i”中,但將“d”留在緩沖區中,因此 cin.fail() 測試返回 false,但我希望它返回真。 如果我輸入 'c' 或 'ccc' 等... cin.fail() 會根據我的需要返回 true。

是否有任何適當的命令來測試我所描述的內容?

我懷疑有不止一種方法可以解決您的問題。 我可以想到以下兩個。

  1. 閱讀i后立即獲取下一個字符。 如果該字符不是空白字符,您可以將其標記為錯誤。

     cin >> i; if ( cin ) // reading to i was successful. { int c = cin.get(); if (!isspace(c) ) { // There was a non whitespace character right // after the number. // Treat it as a problem } }
  2. 讀取一個字符標記並檢查它們中是否有任何一個不是數字。

     std::string token; cin >> token; for ( auto c : token ) { if (!isdigit(c) ) { // Problem } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM