簡體   English   中英

如何將 function 的結果寫入文件 C++

[英]How to write the result of a function to a file C++

我認為這是一個非常簡單的問題,但我沒有找到答案。

我希望將 function 的結果寫入文件。

該文件已打開,我可以向其中寫入一個簡單的字符串,但不是 function 的結果。

我錯過了什么?

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

void addingtext(){
    for (int i = 0; i < 8; ++i)
    {
        std::cout << i << endl;
    }
}

int main () {
    ofstream file;
    file.open("example.txt");
    if(file.is_open()){
        std::cout << "File Open Access \n";
    }
    file << "Write this to the file";
    addingtext();
    //file << addingtext;

    file.close();

    return 0;
}

addingtext()不返回任何內容,並寫入std::cout

你有兩個選擇:

選項 1:使addingtext()返回一個字符串,然后將其寫入文件:

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

std::string addingtext() {
    std::string result;
    for (int i = 0; i < 8; ++i)
    {
        std::cout << i << endl;
        result += i;
        result += "\n";
    }
    return result;
}

int main() {
    ofstream file;
    file.open("example.txt");
    if (file.is_open()) {
        std::cout << "File Open Access \n";
    }
    file << "Write this to the file";
    file << addingtext();

    file.close();

    return 0;
}

選項 2:使addingtext()寫入文件:

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

void addingtext(ofstream& o) {
    for (int i = 0; i < 8; ++i)
    {
        std::cout << i << endl;
        o << i << endl;
    }
}

int main() {
    ofstream file;
    file.open("example.txt");
    if (file.is_open()) {
        std::cout << "File Open Access \n";
    }
    file << "Write this to the file";
    addingtext(file);

    file.close();

    return 0;
}

您的 function 不返回任何值。

如果它返回一個值,例如您在運行添加文本 function 期間創建的字符串,那么您可以在該文件中直接將該字符串添加到文件中。

我認為您想將文件 stream 傳遞給您的 function 以便它寫入文件而不是標准輸出。

void addingtext(ofstream& stream){
    for (int i = 0; i < 8; ++i)
    {
        stream << i << endl;
    }
}

int main () {
    ofstream file;
    file.open("example.txt");
    if(file.is_open()){
        std::cout << "File Open Access \n";
    }
    file << "Write this to the file";
    addingtext(file);
    //file << addingtext;

    file.close();

    return 0;
}

如果您希望 function 返回字符串,請不要將其返回類型聲明為 void。 我會:

#include <string>

string addingtext(){
    string temp;
    for (int i = 0; i < 8; ++i)
    {
        temp += i;
    }
    return temp;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM