0

テキスト ファイルを読み取り、テキスト ファイルで読み取った数値演算を実行するプログラムを作成しようとしています。

例: + 45 35

入力ストリームを使用してそのテキスト ブロックを読み取り、関数内の数値に先行する数学演算を実行しています。

私は正しい構文を 1 時間以上探しましたが、髪を引き裂こうとしています。

ストリーミング関数が空白まですべての文字を読み取る方法を理解するのに完全に行き詰まっていますが、一度に1文字ずつ読み取り、getlineは私の目的に役立つと思った認識可能な関数でさえありません.

これは私が使用しているもので、一度に1文字ずつ読み取ります

char ch; 
inFile >> ch;

空白に達するまでテキストのブロックを読み取るようにインストリームに命令する正しい構文は何ですか?テキストファイルから数字を一緒に追加する方法を誰かが提案できますか?

4

1 に答える 1

4

値を読み取るだけでなく、テキストのブロックを使用することに固執している特定の理由はありますか?

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    istringstream inf("   +  42   100");
    char op;
    int num1, num2;
    inf >> op >> num1 >> num2;
    cout << "Op: " << op << endl;
    cout << "Num1: " << num1 << endl;
    cout << "Num2: " << num2 << endl;

    // pin the op-char to the first operand
    istringstream inf2("-43 101");
    inf2 >> op >> num1 >> num2;
    cout << "Op: " << op << endl;
    cout << "Num1: " << num1 << endl;
    cout << "Num2: " << num2 << endl;
    return 0;
}

出力

Op: +
Num1: 42
Num2: 100
Op: -
Num1: 43
Num2: 101

1 行に 1 つの op と 2 つのオペランドしかないことが保証されている入力ファイルでこれを行う場合は、次のようになります。

ifstream inf(fname);
char op;
int o1, o2;
while (inf >> op >> o1 >> o2)
{
    // use your op and operands here.
    // switch (op)... etc.
}
于 2013-03-07T01:34:08.537 に答える