0

小数を入力した後に末尾の空白を削除する方法はありますか? 例えば:

10        A

空白が終わった後の最初の文字をキャッチしたい。(\n が true である必要があります。そうでない場合は false

これまでの私の試み:

cout << "Please enter a number: ";
cin >> n;

if (cin.peek() == ' ')
    //Something to catch the whitespaces

if(cin.fail() || cin.peek() != '\n')
    cout << "Not a number." << endl;

else
    cout << "A number." << endl;

istreamの関数でそれを行うことは可能ですか?

(私は cin.fail が善行を行うことができることを知っていますが、それでも 10A の入力を失敗とは見なしません)

4

3 に答える 3

1

@chrisが言ったように、あなたは本当に行全体を読むことから始めて、そこから残りの読書をしたい.

std::string line;
std::getline(cin, line);

std::stringstream buffer(line);

buffer >> n;

char ch;
if (buffer >> ch) 
    cout << "Not a number";
于 2013-03-28T04:34:05.310 に答える
1

あなたが何をしようとしているのか、私は少し混乱しています。空白を避けようとしていると言っていますか?

cinはそれらをスキップします...タブや改行のような有効な空白区切りです。もしあなたがそうするなら:

int A(0), B(0);

std::cin >> A >> B;

入力した数字は、スペースを入力するまでは A に入り、その後は B に入ります。

文字列を使用していて、それらをスペースなしで 1 つに連結したい場合。

std::string A, B, C;
std::string final;

std::cin >> A >> B >> C;

std::stringstream ss;
ss << A << B << C;
final = ss.str();

ただし、ジェリーが述べたように、文字列を扱う場合は、 std::getline() を実行するだけで頭痛が軽減される可能性があります。

于 2013-03-28T05:17:18.890 に答える
0

ご協力いただきありがとうございます。文字列を使えば簡単です。それを使用することは許可されていませんが。

次の簡単な方法で実行できます。

cout << "Please enter a number: ";
cin >> n;

while (cin.peek() == ' ')
   cin.ignore(1,' ');

if(cin.fail() || cin.peek() != '\n')
   cout << "Not a number." << endl;

else
   cout << "A number." << endl;
于 2013-04-01T10:00:49.343 に答える