**关闭。**此题需要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行的函数,其次,我创建了一个函数,每当执行代码时,它都会将第一行的内容发送到最后一行,并编写了整个代码。
仅在第一次执行代码时将其移动到最后一行,并且此后不会改变。
每次执行代码时,第一行的内容都会移动到最后一行,我预计会出现继续更改的情况,但它没有工作。
1条答案
按热度按时间0dxa2lsx1#
createCppFile()
每次使用相同的内容重新创建org.cpp
。因此,每次运行程序时,都是用一个干净的文件重新开始。这就是为什么看起来只有第一次运行有效,而实际上所有运行都有效,它们都产生相同的输出,因为它们都从相同的输入开始。如果你希望你的程序在每次运行时产生一个不同的文件,那么你应该只在
org.cpp
不存在的情况下调用createCppFile()
,例如: