我无法获得一个非常基本的命令提示文本处理器工作。 ofstream()的问题

时间:2013-09-17 18:23:34

标签: c++ input command-prompt ofstream

到目前为止,我已经完成了我的程序,以便从用户那里轻松获取文件位置和文件名。问题来自于我尝试使用用户提供的文件位置创建ofstream对象时。我基本上使用字符串库中的append()函数来使文件的位置采用我工作的标准格式c:\users\user\my documents\"file"。我已经测试了没有ofstream对象的代码,事情看起来很好。所以我只是不确定为什么ofstream对象不会引用字符串变量 - filelocation指定的文件位置。

目前,程序应该只在其中创建一个带Hello的文件,然而这并没有发生,代码拒绝编译。我计划在某个地方进一步提供用户输入,但这是我在继续之前需要克服的一个小障碍。

#include <fstream>
#include <string> 
#include <iostream>
using namespace std ;

int main() 
{
string text = "Hello" ;
string title ;
string usertitle ;
string filelocation = "C:/Users/" ;
string user ;
cout << "Input a title for your file: " ;
cin >> title ;
title.insert(title.length() , ".txt" ) ;
cout << "Your title is: " << title << endl ;
cout << endl << "Input the username associated with your computer (Caps Sensitive): " ;
cin >> user ;
filelocation.append( user ) ;
filelocation.append("/My Documents/") ;
filelocation.append(title) ;
filelocation.insert(0, "\"") ;
filelocation.insert(filelocation.length() , "\"" ) ;
cout << "Your chosen file name and location is: " << filelocation << endl ;

ofstream writer( filelocation.c_str() ) ;

if (! writer )
{
    cout << "Error opening file for output" << endl ;
    return -1 ; //Signal an error then exit the program
}
else
{
    writer << text << endl ;
    writer.close() ;
}
return 0 ;
}

提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

您是否检查了std::ofstream构造函数的参数?我认为这是一个const char *

构造函数声明为

explicit ofstream (const char* filename, ios_base::openmode mode = ios_base::out);

因此,在您的情况下,您使用std::string作为参数,它应该是

   std::ofstream writer(filelocation.c_str());