要接受一个字符串(包括空格)并将其写入文件,我使用:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream myFile("readme.txt");
string a;
getline(cin, a);
myFile << a;
myFile.close();
}
但是我应该管理分配给字符串的内存,如果是,那么最简单的方法是什么?
答案 0 :(得分:4)
不,std::string
管理自己的记忆。
答案 1 :(得分:1)
不,你不需要。与C(其中字符串是指向必须管理的数组的指针)不同,std :: string类是一个管理自己内存的对象。当变量a在程序结束时超出范围时,正确释放a的内存。
答案 2 :(得分:0)
正如其他人所说,std::string
(每个其他STL容器就此而言)管理自己的内存,当它超出范围时将被释放。如果你想要更多地控制它何时超出范围,你可以这样做:
int main()
{
ofstream myFile("readme.txt");
{
string a;
getline(cin, a);
myFile << a;
} // <-- string is freed here
// do other things...
}
答案 3 :(得分:0)
在C ++中,提供的字符串模板类是std::basic_string<char>
的typedef,它动态地管理内存。所以你不应该。但是,您仍然可以选择在此任务中帮助此课程。 String为此提供了适当的接口for example
void reserve( size_type new_cap = 0 );
通知std :: basic_string对象计划的大小变化,所以 它可以适当地管理存储分配。