2013-12-13 5 views
-1

Я хочу поместить строку и символ вместе в ofstream(), но я получаю ошибку. Я хочу создавать файлы в разных именах, но в том же пути, например, как это E://string.txt, но строка является переменной вы можете мне помочь?put string и character in instream

#include <iostream> 
#include <ofstream> 
using namespace std; 
int main() 
{ 
    string filename; 
    ofstream note("E://"filename".txt",ios::app); 
} 

Можете ли вы рассказать мне? Я знаю, что мой код ошибочен, но помогите мне исправить это!

ответ

1

Вы можете сформировать свой путь с stringstream, затем извлечь C-нить из этого потока, когда вам это нужно для построения ofstream:

std::stringstream path; 
path << "E:/" << foo() << ".txt"; 

std::ofstream ofs(path.str().c_str()); 

Если вам нужна только для конкатенации строк и символов, вероятно, может обойтись без потока (который мы использовали выше своих возможностей форматирования):

const std::string path = "E:/" + foo() + ".txt"; 
std::ofstream ofs(path.c_str()); 

в C++ 03, то ofstream конструктор требует C-строку (.c_str()) по историческим причинам s, хотя это фиксируется в C++ 11:

const std::string path = "E:/" + foo() + ".txt"; 
std::ofstream ofs(path); 

Используя свой новый пример:

#include <iostream> 
#include <fstream> 
int main() 
{ 
    string filename; 
    ofstream note(("E:/" + filename + ".txt").c_str(), ios::app); 
} 
+0

Изменение, что '' не '' . :) – 0x499602D2