Как вставить переменную в CreateDirectory()
Есть ли способ вставить строковую переменную в CreateDirectory? Я хочу, чтобы он создал каталог в C: с именем, которое ввел пользователь. Когда я делаю что-то вроде
CreateDirectory ("C:\\" << newname, NULL);
Мой компилятор выдает ошибку "Нет совпадения для оператора<< в 'C:\ << newname'"
Это мой код Проблема в void newgame().
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <mmsystem.h>
#include <conio.h>
using namespace std;
int a;
string newname;
string savepath;
struct game
{
string name;
int checkpoint;
int level;
};
void wait( time_t delay )
{
time_t timer0, timer1;
time( &timer0 );
do {
time( &timer1 );
} while (( timer1 - timer0 ) < delay );
}
void error()
{
cout << "\nError, bad input." << endl;
}
void options()
{
cout << "No options are currently implemented." << endl;
}
void load()
{
cout << "Load a Game:\n";
}
//This is where I'm talking about.
void newgame()
{
cout << "Name your Game:\n";
getline(cin,newname);
cin.get();
game g1;
g1.name=newname;
//I want it to create a dir in C: with the name the user has entered.
//How can I do it?
CreateDirectory ("C:\\" << newname, NULL);
}
//This isn't the whole piece of code, just most of it, I can post the rest if needed
2 ответа
CreateDirectory (("C:\\" + newname).c_str(), NULL);
Ты можешь присоединиться std::string
с operator+
, Или, в вашем случае, вы можете присоединить строку C к std::string
с помощью operator+
, также. Результатом является std::string
, (Будьте осторожны - вы не можете соединить две строки C таким образом.)
Я подозреваю, однако, что CreateDirectory
принимает строку C, а не std::string
, так что вам нужно будет преобразовать его с .c_str()
член.
Чтобы использовать вставку потока, вам нужно сначала создать поток:
std::ostringstream buffer;
buffer << "c:\\" << newname;
CreateDirectory(buffer.str().c_str());