1

これまでの私のコードは次のとおりです。

 #include "stdafx.h"
 #include <iostream>
 #include <string>
 using namespace std;

 int main()
 {
 string exp;
 cout << "Enter a number and raise it to a power" << endl;
 cin >> exp;
 int num = exp[0];
 int pow = exp[2];

 cin.get();
 cin.ignore(256,'\n');
 }

基本的には「2^5」のようなものを入力できるプログラムを作ろうとしています。これまで、文字列の1番目と3番目の値を取得し、それらを「num」および「pow」と呼びました。(数値、電力)「cout<<num;」のようなものを試してみると それはあなたに10進数のASCII値を与えるでしょう。10進数に変換するにはどうすればよいですか?

4

4 に答える 4

6

cinから整数変数に直接読み取ることができます。

int n;
std::cin >> n;

しかし、そのように自然に見える表現を入力することはできません。

読むために2^5あなたは使うことができますstd::stringstream

int pos = exp.find('^');
int n;
std::stringstream ss;
if(pos != std::npos){
    ss << exp.substr(0, pos);
    ss >> n;
}

2番目の変数についても同様です。

このメソッドは、Boostにとして実装されていboost::lexical_castます。

より複雑な表現にはパーサーを作成する必要があります。この主題についてもっと読むことをお勧めします。

于 2012-04-22T18:50:58.150 に答える
2

strtolこれはとても得意です。可能な限り多くの数字を読み取り、数値を返し、停止の原因となった文字へのポインターを提供します(この場合は'^')。

于 2012-04-22T18:56:36.520 に答える
1
    int num;
    char op;
    int pow;
    if ((std::cin >> num >> op >> pow) && op == '^') {
            // do anything with num and pow
    }
于 2012-04-22T19:05:08.340 に答える
0

この場合、あなたの数はすべて10より劣っているようで、exp[0]-'0'十分exp[1]-'0'です。

于 2012-04-22T18:53:03.203 に答える