【问题标题】:File I/O C++ ifstream syntax文件 I/O C++ ifstream 语法
【发布时间】:2013-02-22 01:45:02
【问题描述】:

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

示例: + 45 35

我正在使用输入流来读取该文本块并在函数中的数字之前执行数学运算。

我已经找了一个多小时来寻找正确的语法,但我快要把头发扯下来了。

我完全被困在弄清楚如何让流函数读取每个字符直到空白,但它一次读取一个字符,而 getline 甚至不是一个可识别的函数,我认为这对我的事业有帮助。

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

char ch; 
inFile >> ch;

命令流内读取文本块直到到达空白的正确语法是什么,谁能建议我如何将文本文件中的数字加在一起?

【问题讨论】:

  • 为什么getline()无法识别?

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


【解决方案1】:

您是否有特定的原因专注于使用文本块而不是仅仅读取值?

#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.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多