1

ちょっと私はプログラミングの初心者です。だからそれは愚かに聞こえるかもしれません。しかし、私は本当に多くのことを知りません。ユーザー入力が数字または文字列/単語の両方であるプログラムを書きたいです。数値の場合、ある方法で処理されます。単語の場合は、別の方法で処理されます。つまり、入力タイプを確認して、それに応じて作業したいということです。私はこれを試しましたが、機能していません!

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
    int number;
    string word;
    cout<<"enter a number or a word\n";
    while(cin>>number || cin>>word){
    if(cin>>number){
        cout<<number<<"\n";}
    if(cin>>word){
        cout<<word<<"\n";}
    }
    return 0;
}
4

2 に答える 2

2

フォーマットされた抽出が失敗すると、ストリームは「失敗」状態になり、それ以上簡単に処理できなくなります。常に文字列を読み取り、それを解析しようとする方がはるかに簡単です。たとえば、次のようになります。

#include <iostream>
#include <string>

for (std::string word; std::cin >> word; )
{
    long int n;
    if (parse_int(word, n)) { /* treat n as number */ }
    else                    { /* treat word as string */ }
}

必要なのはパーサー関数だけです。

#include <cstdlib>

bool parse_int(std::string const & s, long int & n)
{
    char * e;
    n = std::strtol(s.c_str(), &e, 0);
    return *e == '\0';
}
于 2012-07-17T07:33:01.700 に答える
0

了解しました。最初に、どのようcincout機能するかを読む必要があります。

あなたの問題の解決策は

1) Declare a single string variable eg: var_input
2) Take input only once (using cin>>var_input)
3) Check if the string is a number or a word taking help from Link One

リンク1: 文字列がC ++の数値であるかどうかを判断する方法は?

于 2012-07-17T07:41:42.347 に答える