Я пытаюсь открыть файл, имя которого состоит из постоянных и переменных частей.C++ ifstream с переменной filename
Мой фактический код
char filename[100];
char extension1[] = ".pdb";
vector<string> id;
//code to find the ids(it works)
sprintf(filename, "/home/giovanni/Scrivania/enzimi/ligan/%s", id[1].c_str());
sprintf(filename, "%s%s", filename,extension1);
Проблема заключается в том, что имена файлов становится
.pdbe/Джиованни/Scrivania/enzimi/ligan/102M
вместо
/home/giovan п/Scrivania/enzimi/ligan/102M.pdb
Tnx заранее
Вы не можете использовать одну и ту же строку как в качестве адресата, так и аргумент в 'sprintf', то есть [* undefined behavior *] (http://en.wikipedia.org/wiki/Undefined_behavior). В вашем случае вы можете вместо этого «strcat». –
Хотя я тоже верю, не могли бы вы дать более подробное объяснение? Документация на http://www.cplusplus.com/reference/cstdio/sprintf/ не упоминает об этом. – Codor
Лучшим решением было бы использовать ['std :: istringstream'] (http://en.cppreference.com/w/cpp/io/basic_istringstream). –