1

すべての準備が整いましたが、問題が 1 つあります。私の教授は、ユーザーに何人分入れるかを尋ねてほしいと言っています。私の問題は次のとおりです。

string recipeName, userInputStr, servingNumber;

   int userInputInt;
   double totalCals, totalCarbs;
   // initialize accumlator variables
   totalCals  = 0.;
   totalCarbs =  0;
// asking for name of recipe and number of servings
   cout << "What is the name of your recipe? ";
   getline(cin, recipeName);
   cout << "How many servings would you like? ";
   getline(cin, servingNumber);
   istringstream(servingNumber) >> totalCals, totalCarbs; 
   if (servingNumber<1 || servingNumber>10)
   {
    cout << "You have entered the wrong answer. " << endl;
    return 0;
   }

より具体的には、ここにあります:

if (servingNumber<1 || servingNumber>10)

< と > で「これらのオペランドに一致する演算子はありません」というエラーが表示され続けます

文字列servingNumberをintに変換してから比較するように言われましたが、ここでは変換されていませんか?:

   istringstream(servingNumber) >> totalCals, totalCarbs;

その後、if ステートメントで比較しますか?

私は何が間違っているのか分かりません..

4

3 に答える 3

1

これらの変数を文字列として宣言しましたが、それらを整数と比較すると、それらの引数を取るオーバーロードは存在せず、受け入れられる変換もありません。あなたはそれらが整数であることを意味していたと思います:

string recipeNamem userInputStr;
int servingNumber;                                                             /*
^^^

どちらも必要ありませんistringstream


また、 の代わりにgetline(cin, servingNumber)を行いますcin >> servingNumber

于 2013-10-21T01:04:21.750 に答える
0

コードで文字列として定義servingNumberしています。stringaを数値と比較しません。演算子は文字列クラスに対して定義されていません。

于 2013-10-21T01:04:21.080 に答える