文件I / O C ++ ifstream语法

时间:2013-03-07 01:21:52

标签: c++ io iostream ifstream file-io

我正在尝试编写一个程序来读取文本文件并执行它在文本文件中读取的数学运算。

实施例: + 45 35

我正在使用输入流来读取该文本块并执行一个数学操作,该操作先于函数中的数字。

我已经找了一个多小时的正确语法,我就要把头发撕掉了。

我完全陷入困境,想知道如何让流函数读取每个字符直到空白,但它一次读取一个字符而getline甚至不是一个我认为可以帮助我的事情的可识别函数。

我正在使用的是一次读取一个字符

char ch; 
inFile >> ch;

命令介质读取文本块直到它到达空格的正确语法是什么?有人可以建议我如何通过从文本文件中添加数字来进行操作?

1 个答案:

答案 0 :(得分: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

如果你想用输入文件做这个,保证每行只有一个操作数和两个操作数,它将是这样的:

ifstream inf(fname);
char op;
int o1, o2;
while (inf >> op >> o1 >> o2)
{
    // use your op and operands here.
    // switch (op)... etc.
}