Как соединить int с wchar_t * в C ++? - PullRequest
3 голосов
/ 23 декабря 2011

Мне нужно создать и написать N файлов, у каждого должен быть целое число, чтобы идентифицировать его.

Это мой кусок кода:

for(int i=0; i<MAX; i++)
{
    uscita.open("nameFile"+i+".txt", ios::out); 
    uscita <<  getData() << endl;
    uscita.close();     
}

И это то, что я хотел быхотел бы найти в моем каталоге после выполнения:

nameFile0.txt
nameFile1.txt
nameFile2.txt
...
nameFileMAX.txt

Проблема вышеупомянутого кода заключается в том, что я получаю ошибку компиляции:

ошибка C2110: '+' Невозможно выполнитьдобавить два указателя

Если я попытаюсь создать строку для имени, возникнет еще одна проблема:

string s ="nameFile"+i+".txt";
uscita.open(s, ios::out); 

И проблема будет:

ошибка C2664: вы не можете преобразовать строку в const wchar_t*

Что я могу сделать?Как я могу создавать файлы с разными именами, объединяющими int в wchar_t*?

Ответы [ 3 ]

2 голосов
/ 24 декабря 2011

Вы можете использовать std::to_wstring:

#include <string>

// ...

std::wstring s = std::wstring("file_") + std::to_wstring(i) + std::wstring(".dat");

(Затем используйте s.c_str(), если вам нужен стиль C wchar_t*.)

2 голосов
/ 23 декабря 2011

Вы можете использовать wstringstream

std::wstringstream wss;
wss << "nameFile" << i << ".txt";
uscita.open(wss.str().c_str(), ios::out);
0 голосов
/ 23 декабря 2011

Это проще и быстрее:

wchar_t fn[16];
wsprintf(fn, L"nameFile%d.txt", i);
uscita.open(fn, ios::out);
...