Fstream C 自动线添加
FStream C++ automatic line addition
用ofstream在每个值之间进行端线是很痛苦的。这是我所拥有的示例:
ofstream fout("~/xample.txt");
fout << val1;
fout << endl;
fout << val2;
我希望能够做到,而是
ofstream fout("xample.txt");
fout << val1;
fout << val2;
我不在乎如何存储文件,因为我会编写一个配置向导。
如果 fout << val1 << endl;
与您不起作用,则可以继承并创建自己的流,从而自动添加endl
。但您也可以从消防栓中喝水。
这是一个痛苦...
此外,您可以简单地写
fout << val1 << endl;
fout << val2 << endl;
您可以使用任何其他Whitespace字符值在输出文件中界定您的值:
fout << val1 << ' ';
fout << val2 << ' ';
// ... more value outputs
fout << endl;
对文件大小不重要,但是行的数量肯定。
更新:
当您询问如何扩展std::ostream
上的格式行为:
我认为使用std::streambuf
,std::ostream
等人的继承并不是一个好主意,并尝试(重新)本身实现接口本身(通常从来没有一个好主意继承STL类,可以完成)。我想说的目的是使用流操纵器进行这种。
要自动化附加endl
或任何其他定界符,您可以编写一个小的参数化流操作器(至少此解决方案是复制/粘贴和IDE IntelliSense友好):
template<typename T>
class auto_delim_manip
{
public:
auto_delim_manip(T value_, char delim_)
: value(value_)
, delim(delim_) {}
void put(std::ostream& os) const {
os << value << delim;
os.flush();
}
private:
T value;
char delim;
};
template<typename T>
auto_delim_manip<T> auto_delim(T value, char delim = 'n') {
return auto_delim_manip<T>(value,delim);
}
template<typename T>
std::ostream& operator<<(std::ostream& os, const auto_delim_manip<T>& autoDelim)
{
autoDelim.put(os);
return os;
}
int main() {
cout << auto_delim(5.2) << auto_delim(3) << auto_delim("Hello!");
return 0;
}
输出:
5.2
3
Hello!
在此处检查运行样本。
如果您有大量值,只需将'endl'放在与输出的同一行上,然后通过所有数据循环循环。例如:
for(int i = 0; i < numValues; ++i) {
fout << values[i] << endl;
}
我不知道一种内置的方式来自动化这一点,但老实说,手动添加线路结尾不是太多。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 将图像添加到资源文件夹UWP C++
- Fstream C 自动线添加