有没有办法将字符串变量插入CreateDirectory?我希望它用C:用用户输入的名称创建一个目录。当我做
之类的事情CreateDirectory ("C:\\" << newname, NULL);
我的编译器给出了错误“不匹配运算符&lt;&lt; in'C:\&lt;&lt; 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
答案 0 :(得分:3)
CreateDirectory (("C:\\" + newname).c_str(), NULL);
您可以std::string
加入operator+
。或者,在您的情况下,您也可以使用std::string
将C字符串加入operator+
。结果是std::string
。 (但要小心 - 你不能以这种方式加入两个C字符串。)
但我怀疑CreateDirectory
使用的是C字符串,而不是std::string
,因此您需要使用.c_str()
成员进行转换。
答案 1 :(得分:0)
要使用流插入,您需要先创建一个流:
std::ostringstream buffer;
buffer << "c:\\" << newname;
CreateDirectory(buffer.str().c_str());