C++ C++;写入文件不起作用?

C++ C++;写入文件不起作用?,c++,macos,file,io,ofstream,C++,Macos,File,Io,Ofstream,我目前正在开发一款iPhone游戏,它通过TCP向服务器程序发送声音文件。TCP传输工作得很好(我已经设置了缓冲区来检查它是否与声音文件匹配,确实如此)。问题是。。。我想将声音文件写入服务器上自己的文件夹中。每个游戏都有其唯一的gameID,gameID应该是服务器上文件夹的名称 我的“写入文件”功能当前如下所示: void PacketInterpreter::makeFile(int gameID, std::string buffer){ std::string gameIDdir

我目前正在开发一款iPhone游戏,它通过TCP向服务器程序发送声音文件。TCP传输工作得很好(我已经设置了缓冲区来检查它是否与声音文件匹配,确实如此)。问题是。。。我想将声音文件写入服务器上自己的文件夹中。每个游戏都有其唯一的gameID,gameID应该是服务器上文件夹的名称

我的“写入文件”功能当前如下所示:

void PacketInterpreter::makeFile(int gameID, std::string buffer){
    std::string gameIDdir = "mkdir " + std::to_string(gameID);
    std::system(gameIDdir.c_str());
    std::string constructedPath = std::to_string(gameID);
    constructedPath += "/";

    std::ofstream thisFile;
    thisFile.open(constructedPath+"sound.caf");
    thisFile << buffer;
    thisFile.close();

    std::cout << "File assembled at " << constructedPath << "sound.caf" << std::endl;
}
void packetexplorer::makeFile(int gameID,std::string buffer){
std::string gameIDdir=“mkdir”+std::to_string(gameID);
std::system(gameIDdir.c_str());
std::string constructedPath=std::to_string(gameID);
构造路径+=“/”;
std::流文件;
打开(constructedPath+“sound.caf”);

此文件打开后是否检查了此文件的状态?可能是您需要一些额外的
ios::openmode
标志。您在任何时候都没有检查错误。首先,您没有检查
std::system
调用的结果以查看函数是否成功。路径中是否有
mkdir
?您尝试过吗
/usr/bin/mkdir
?您是否搜索了整个文件系统以查看目录是否已创建?您对当前工作目录是否具有写入权限?目录上的权限是什么?您的进程是否具有写入权限?如果您的文件路径有空格,
mkdir
可以很高兴地进行不同的直接访问例如,
mkdir/path/to/something with spaces/foo
可能会使目录
/path/to/something
with
spaces/foo
(虽然在本例中,如果没有
-p
参数,它可能会在
spaces/foo
失败。)实际上,您应该测试目录是否存在,并自己调用
mkdir
,而不是调用
system()
来为您执行此操作。在任何情况下,您都应该检查是否成功,无论您是通过
system()
间接调用
mkdir
,还是您自己直接调用它。