У меня есть 5 текстовых файлов с именами test1.txt, test2.txt и т. д. до test5.txt. Мне необходимо каждый из них открыть в цикле. Как сделать так, чтобы имя файла формировалось в цикле автоматически. То есть, имя test бралось из переменной filename, затем к ней прибавлялось значение итератора i, затем добалялось расширение, которое берется из переменной format.
И чтобы в итоге получить в переменной file, например: test1.txt и уже этот файл открыть.
Помогите, как сложить эти строки?
string filename = "test";
string format = ".txt";
for(int i = 0; i < 5; i++) {
string file = filename + i + format; // Как правильно сделать?
ifstream f;
f.open(file);
}
Другие языки программирования и технологии
Как открыть файл на C++ ?
...
#include <sstream>
...
string name = "test";
string fmt = ".txt";
for(int i = 1; i <= 5; ++i) {
ostringstream oss;
oss << name << i << fmt;
string filename = oss.str();
...
}
или так:
...
string name = "test";
string fmt = ".txt";
for(int i = 1; i <= 5; ++i) {
string filename = name + char(i + '0') + fmt;
...
}
Но только для i: 0 <= i <= 9
#include <sstream>
...
string name = "test";
string fmt = ".txt";
for(int i = 1; i <= 5; ++i) {
ostringstream oss;
oss << name << i << fmt;
string filename = oss.str();
...
}
или так:
...
string name = "test";
string fmt = ".txt";
for(int i = 1; i <= 5; ++i) {
string filename = name + char(i + '0') + fmt;
...
}
Но только для i: 0 <= i <= 9
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
string filename("test");
string extension(".txt");
string path("");
for (int i = 1; i <= 5; ++i) {
path = filename + to_string(i) + extension;
ifstream stream(path.c_str());
// TODO:
}
cin.sync();
cin.get();
}
#include <string>
#include <fstream>
using namespace std;
int main() {
string filename("test");
string extension(".txt");
string path("");
for (int i = 1; i <= 5; ++i) {
path = filename + to_string(i) + extension;
ifstream stream(path.c_str());
// TODO:
}
cin.sync();
cin.get();
}
а чему file равна то?
Я бы не использовал дорогостоящие операции "склеивания" строк в таком случае. а по-старинке. Зато гораздо быстрее чем что-либо =)
#include <iostream>
using namespace std;
#define FNAME "test"
#define FEXT ".txt"
//Чуть помогаем компилятору
const int FNAME_S = sizeof(FNAME);
int main()
{
char buf[FNAME_S+sizeof(FEXT)] = {FNAME "0" FEXT};
for(int i=0;i<5;i++) {
buf[FNAME_S-1] = '1' + i;
cout << buf << endl;
}
return 0;
}
Ну или если string использовать:
вместо char buf
string buf = FNAME "0" FEXT;
#include <iostream>
using namespace std;
#define FNAME "test"
#define FEXT ".txt"
//Чуть помогаем компилятору
const int FNAME_S = sizeof(FNAME);
int main()
{
char buf[FNAME_S+sizeof(FEXT)] = {FNAME "0" FEXT};
for(int i=0;i<5;i++) {
buf[FNAME_S-1] = '1' + i;
cout << buf << endl;
}
return 0;
}
Ну или если string использовать:
вместо char buf
string buf = FNAME "0" FEXT;
Можно ещё так:
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string filename = "input";
string format = ".txt";
char* buffer;
for (int i = 0; i < 5; i++) {
itoa(i,buffer,10);
ifstream is(filename + string(buffer) +format);
is.close();
}
return 0;
}
или так (стандарт C++11)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string filename = "input";
string format = ".txt";
for (int i = 0; i < 5; i++) {
ifstream is(filename + to_string(i) +format);
is.close();
}
return 0;
}
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string filename = "input";
string format = ".txt";
char* buffer;
for (int i = 0; i < 5; i++) {
itoa(i,buffer,10);
ifstream is(filename + string(buffer) +format);
is.close();
}
return 0;
}
или так (стандарт C++11)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string filename = "input";
string format = ".txt";
for (int i = 0; i < 5; i++) {
ifstream is(filename + to_string(i) +format);
is.close();
}
return 0;
}
Похожие вопросы
- вместо того, чтобы открыть файл hosts с помощью блокнота, я изменил расширение на .txt Теперь файл выглядит как блокнот
- Генератор случайных слов (строк) из файла на C++.
- С помощью какой программы можно открыть файл с расширением .dll
- Как открыть файл .dat и .dll. Подскажите пожалуйста через какую программу можно открыть эти файлы? (.dat и .dll)
- Как сделать чтобы при открытии файла можно было выбрать программу которой его открыть?? Нажал открыть файл .dll через...
- Чем открыть файл в формате .dmg. Чем открыть файл в формате .dmg +10 чесно есле правельно
- Какой программой можно открыть файлы .exe?
- как открыть файл в формате .enc?
- Перечислить все файлы в C: \, расширение которых содержит X и сортировать результаты по размеру. cmd.exe
- чем открыть файл emf?? какая прога его создает?