繁体   English   中英

C ++文件I / O函数

[英]C++ file I/O functions

我想从文件输入中读取行,并能够将变量分配给一行的不同部分。

示例输入:

4 5.35  Wine Stoppers
2 14.85  Silver Cheese Trays

我想要每个变量,因为我需要将每行中的double乘以常量,然后将更新的行发送到新文件。

我不是要求代码,我只是要求更多我想要完成这项任务的函数。 这是我在C ++工作的第一周,所以我认为这是基本的,但老师没有告诉我们实验室需要做什么。 他确实让我参与其中所以我有一种感觉我需要字符串功能,但我在网上搜索一些对我有用的麻烦。

我到目前为止(马车):

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// Accepts: N/A
// Returns: 0 if no error

int main(void){
    ifstream inputFile("order.txt");
    ofstream outputFile("inventory.txt");
    string line;
    char description;
    int quantity, retail;
    const double MARKUP = 2.4;
    while (getline(inputFile, line)){
        inputFile >> quantity >> retail >> description;
        outputFile << quantity << retail * MARKUP << description <<
            endl;
    }
    cout << "Inventory File created" << endl;
    inputFile.close();
    outputFile.close();

    return 0;
}

查看标准库的iostream模块,它允许您使用文件流。 特别是,您可能需要注意fstream对象,它允许您逐行读取文件和stringstream对象,它允许您对字符串进行标记(根据分隔符拆分它们)。 祝好运!

您需要流插入运算符(即operator>>() )或某种形式的格式化I / O功能。 您可以使用其中任何一个,但出于我们的目的,流插入运算符就足够了。 对于您为插入运算符提供的每个参数,流将遍历其缓冲区中的每个字符,并分配与参数类型对应的值。 例如:

std::ifstream in("in.txt");

int x;
in >> x;

你应该知道这是如何工作的:

首先,流提取并丢弃前导空格,直到它找到流中的第一个有效字符。 解析后,如果字符对于int是正确的,则将其提取到整数中,然后流移动到下一个字符。 如果不是,则流进入错误状态。

你说你的文件看起来像这样:

 4 5.35 Wine Stoppers 2 14.85 Silver Cheese Trays 

因此,您需要两个整数,两个浮点变量和四个用于提取的字符串。 您可以按值显示的顺序执行提取:

int a, b;
float f1, f2;
std::string wine, silver, trays, stoppers;

in >> a >> f1 >> wine >> stoppers >> b >> f2 >> silver >> cheese >> trays;

如果值在文件中以行格式显示,则应使用std::getline和loop。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM