我的代码:
ifstream Reader ("commands.txt");
if(Reader.fail())
{
error("File \"commands.txt\" could not be found or opened.\n");
}
Reader.seekg(0, Reader.end);
int FSize = Reader.tellg();
if(FSize == 0)
{
cout << "File \"commands.txt\" is empty.\n";
return 0;
}
char * ContentsHold = {};
Reader.read(ContentsHold, FSize);
Reader.close();
string Contents(ContentsHold);
最后,内容应该是一个c ++字符串,用于保存commands.txt中的所有内容。我收到错误&#34; basic_string :: _ S_construct null无效&#34;。我无法弄清楚出了什么问题。帮助
答案 0 :(得分:0)
你有什么,
char* ContentsHold = {};
声明一个指向使用null常量初始化的字符的指针。这不是指向数组第一个元素的指针,您必须使用new[]
语法:
char* ContentsHold = new char[FSize];
这将创建一个数组,ContentsHold
将指向其第一个元素。更好的方法是使用std::string
并公开其第一个元素的地址:
std::string ContentsHold(FSize);
Reader.read(&ContentsHold[0], FSize);
这样您就不必担心删除新内存了。