簡體   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