Поэтому я занимаюсь проектами Эйлера и храню все свои решения в одной программе. Я только начал на C ++, поэтому я не знаю, является ли это хорошим способом сделать это. В любом случае, каждый файл .cpp содержит одну проблему. Так что в основном моя структура выглядит так:
«Executer.cpp»
include <iostream>
include "other.h"int main() {
Problem1();
Problem2();
// etc.
system("pause")
return 0;
}
«Other.h»
void Problem1();
void Problem2();
// etc.
«Problem_X.cpp» (X обозначает номер задачи). У меня много этих файлов.
/* PROBLEM X
*/
#include <iostream>
#include <fstream>
#include <time.h>
void ProblemX() {
time_t t1, t2;
t1 = clock();
// Code goes here
t2 = clock();
float diff((float)t2 - (float)t1);
float seconds = diff / CLOCKS_PER_SEC;
// Results
std::ofstream myFile("result.txt");
//myFile << sum;
myFile.close();
std::cout << "-------------------- Problem X -------------------" << std::endl;std::cout << "I ran for: " << seconds << " seconds" << std::endl << std::endl;
}
Теперь проекты состоят из почти 600 задач, что означает, что мне нужно создать 600 файлов и скопировать шаблон в каждый из этих документов. Поэтому я подумал, что смогу просто сделать программу для этого.
По сути, я поместил «Problem_X.cpp» в текстовый файл с именем «standard.txt». Затем я написал следующую программу, которую я запускаю из своего главного int, включив объявление функции в «other.h» и вызвав функцию из «Executer.cpp». Он отлично работает при копировании текста из одного текстового файла в другой текстовый файл. Но сейчас (я полагаю, поскольку я пытаюсь скопировать в файл .cpp) ничего не происходит:
#include <fstream>
#include <iostream>
#include <sstream>
void CreateNewFile(int number) // denotes the number of the problem you wish to create
{
std::string strNumber = static_cast<std::ostringstream*>(&(std::ostringstream() << Number))->str();
std::string str1 = "Problem_";
std::string str2 = ".cpp";
std::string strr;
strr.append(str1); strr.append(strNumber); strr.append(str2);
std::ofstream out(strr); //this creates it.
std::ifstream in("standard.txt");
if (!out.is_open())
{
std::cout << "ERROR: Can not open document2.txt" << std::endl;
return;
}
std::string str;
while (std::getline(in, str)) {
out << str << std::endl;
}
in.close();
out.close();
}
У кого-нибудь есть опыт, что-то подобное делать? Я не могу найти никаких сообщений в Google, и у меня нет идей о том, где искать.
Программа на самом деле работает так, как задумано. Он создает новые файлы «Problem_X.cpp» в самый раз. Они просто не импортируются в исходную папку VS. Если у кого-то есть быстрое решение для этого, они могут оставить это в комментарии здесь.
Других решений пока нет …