c++ 创建一个函数,在每次调用该函数时将第一行的内容移动到最后一行,并检索经过的时间[关闭]

dw1jzc5e  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(101)

**关闭。**此题需要debugging details。目前不接受答复。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
昨天关门了。
Improve this question

#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
#include <chrono>
#include <vector>

void createCppFile() {
    std::ofstream file("../org.cpp");

    const int NUM_LINES = 1000;
    const int NUM_REPEAT = 64;

    for (int i = 0; i < NUM_LINES; ++i) {
        int lineNumber = i % 10;
        for (int j = 0; j < NUM_REPEAT; ++j) {
            file << lineNumber;
        }
        file << "\n";
    }

    file.close();
}

void moveFirstLineToLast() {
    std::ifstream inputFile("../org.cpp"); 
    std::ofstream tempFile("../temp.cpp");  

    std::string firstLine;       
    std::string remainderLine;   

    if (std::getline(inputFile, firstLine)) {

        while (std::getline(inputFile, remainderLine)) {    
            tempFile << remainderLine << "\n";              
        }

        tempFile << firstLine;      
    }

    inputFile.close();
    tempFile.close();

    std::remove("../org.cpp");
    std::rename("../temp.cpp", "../org.cpp");
}

int main() {
    std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
    createCppFile();
    moveFirstLineToLast();

    std::chrono::system_clock::time_point end = std::chrono::system_clock::now();
    std::chrono::duration<double> elapsed = end - start;

    std::cout << "elapsed time : " << elapsed.count() << "sec" << "\n";

    return 0;
}

我创建了一个函数,它创建了一个1000行的c++文件,用0到9填充第1到第10行,然后从0重复到第11行。此外,通过添加一个函数,每当调用此函数时,第一行的内容都会移动到最后一行。这时,我做了一个代码,每当调用它时,它都能知道经过的时间。
但是,它只在第一次执行代码时移动到最后一行,此后不会更改。
首先,我创建了一个生成1000行的函数,其次,我创建了一个函数,每当执行代码时,它都会将第一行的内容发送到最后一行,并编写了整个代码。
仅在第一次执行代码时将其移动到最后一行,并且此后不会改变。
每次执行代码时,第一行的内容都会移动到最后一行,我预计会出现继续更改的情况,但它没有工作。

0dxa2lsx

0dxa2lsx1#

createCppFile()每次使用相同的内容重新创建org.cpp。因此,每次运行程序时,都是用一个干净的文件重新开始。这就是为什么看起来只有第一次运行有效,而实际上所有运行都有效,它们都产生相同的输出,因为它们都从相同的输入开始。
如果你希望你的程序在每次运行时产生一个不同的文件,那么你应该只在org.cpp不存在的情况下调用createCppFile(),例如:

...
#include <filesystem>

int main() {
    ...

    if (!std::filesystem::exists("../org.cpp")) { // <-- add this
        createCppFile();
    }
    moveFirstLineToLast();

    ...
}

相关问题