cout

File Merge 1.0

房东的猫 提交于 2020-03-28 03:01:44
main.cpp 1 #include <iostream> 2 #include <fstream> 3 #include <stdlib.h> 4 #include <windows.h> 5 6 using namespace std; 7 8 int main ( int argc, char* argv[] ) { 9 if ( argc < 3 ) { 10 cout << "File Merge 1.0" << endl; 11 cout << " Usage: fm <destination file> <source file>" << endl; 12 cout << " e.g. fm app.exe 0_127.dat 128_138.dat" << endl; 13 return -1; 14 } 15 fstream dst0 ( argv[1], ios::out | ios::trunc ); 16 if ( dst0.is_open() ) { 17 dst0.flush(); 18 dst0.close(); 19 } else { 20 cout << "Can not create <destination file> file." << endl; 21 return -1; 22 } 23 for ( int i = 2; i <

sync_with_stdio(false)的副作用

◇◆丶佛笑我妖孽 提交于 2020-03-28 00:01:25
sync_with_stdio() 的一个特性 水一篇随笔 其实对于用快读的大佬来说没什么用,但还是提一下 ios::sync_with_stdio(false) 用处是“关闭同步”,从而加快cin与cout的效率。 在部分机子上如果开了这个函数cin和cout跑的还比printf和scanf快。 但是用了sync_with_stdio(false)之后不能与printf和scanf同用,否则会出错。 最近调试的时候发现的: #include<iostream> #include<cstdio> using namespace std; int main() { ios::sync_with_stdio(false); cout<<"1\n"; printf("2\n"); cout<<"3\n"; printf("4\n"); } 运行结果是: 2 4 1 3 可以发现开了 ios::sync_with_stdio(false) 之后,printf函数被提前了,而且这与它在代码中具体出现的位置无关。 至于为什么,据说是C++为了兼容C语言,保证程序在使用 std::printf 和 std::cout 的时候不发生混乱(不发生上述情况),将输出流绑到了一起,也就是用了 sync_with_stdio() 函数: 如果不绑到一起(也就是开个ios::sync_with_stdio

C++ 元素计数 count()

这一生的挚爱 提交于 2020-03-26 09:07:09
C++ 元素计数 count() algostuff.hpp #ifndef ALGOSTUFF_HPP #define ALGOSTUFF_HPP #include <array> #include <vector> #include <deque> #include <list> #include <forward_list> #include <set> #include <map> #include <unordered_set> #include <unordered_map> #include <algorithm> #include <iterator> #include <functional> #include <numeric> #include <iostream> #include <string> //集合中添加元素 template <typename T> inline void INSERT_ELEMENTS(T& coll, int first, int last) { for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); } } //输出集合中的元素 template <typename T> inline void PRINT_ELEMENTS(const T&

C++ minmax_element

谁都会走 提交于 2020-03-26 09:06:22
C++ minmax_element 最大值 最小值 algostuff.hpp #ifndef ALGOSTUFF_HPP #define ALGOSTUFF_HPP #include <array> #include <vector> #include <deque> #include <list> #include <forward_list> #include <set> #include <map> #include <unordered_set> #include <unordered_map> #include <algorithm> #include <iterator> #include <functional> #include <numeric> #include <iostream> #include <string> //集合中添加元素 template <typename T> inline void INSERT_ELEMENTS(T& coll, int first, int last) { for (int i = first; i <= last; ++i) { coll.insert(coll.end(), i); } } //输出集合中的元素 template <typename T> inline void PRINT_ELEMENTS

作业5-继承和派生

这一生的挚爱 提交于 2020-03-22 16:53:51
1.全面的MyString 输出: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8. ijAl- 9. ijAl-mnop 10. qrst-abcd- 11. abcd-qrst-abcd- uvw xyz about big me take abcd qrst-abcd- 1 /*使程序输出指定结果*/ 2 #include <cstdlib> 3 #include <iostream> 4 using namespace std; 5 int strlen(const char * s) 6 { int i = 0; 7 for(; s[i]; ++i); 8 return i; 9 } 10 11 void strcpy(char * d,const char * s) 12 { 13 int i = 0; 14 for( i = 0; s[i]; ++i) 15 d[i] = s[i]; 16 d[i] = 0; 17 18 } 19 20 int strcmp(const char * s1,const char * s2) 21 { 22 for(int i = 0; s1[i] && s2[i] ; ++i) { 23 if( s1[i] < s2[i] ) 24

学习vc++的第三天--集合

£可爱£侵袭症+ 提交于 2020-03-21 01:10:58
原来cpp拷贝构造函数写了之后一定要重写赋值运算符,否则会出现内存重复释放的问题. 学习了集合类型,发现cpp的vector的_Pop_back_n()函数已经在vs2019无法使用..貌似作用也不大..嘻嘻 cpp的vector和c#的list差不多,而cpp的list却好像没有对应的c#操作... 因为我在c#上面重写过迭代器支持类型, 也就是一个不重复加入的:list<T1,T2,T3>, c#自带的支持重复和仅一个泛型的模板:list<T>, 所以可能会在cpp上面复现过往实现过的功能,就比较敏感集合类型的用途. vector的意思是矢量,矢量是连续的, 而list是链表,链表是可断可接, 如意所示,速度要求就看名字就可以联想得到,给他们起名字的人都挺有意思的. 然后发现cpp的std(标准模板库)的没有驼峰命名法,蛮糟糕的,因为敲开c#的人都喜欢以此区分函数和变量... cpp挺有意思,int不能写成int,要写成size_t...因为考虑了64位版本... 所以很多时候一定要多看内部代码.. 今天学习到字符串的赋值和操作,主要操作的形式是要对char.. char*.. const char*.. 然后和string..str.c_str()的认识... 乱七八糟的学习代码: #include <iostream> #include <vector> #include

std::ios::sync_with_stdio(false);

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-20 23:28:26
std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); c++中cin,cout效率比较低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入和输出缓存,可节省时间,使效率与scanf与printf相差无几 默认的情况下cin绑定的是cout,每次执行 << 操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。 如下所示: #include <iostream> int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); // IO } 来源: https://www.cnblogs.com/hrlsm/p/12535578.html

Adapter

…衆ロ難τιáo~ 提交于 2020-03-20 07:02:04
今天是第一次在Mac book上编程,与在windows上写代码相比,既新鲜又充斥在许多小问题,还好很快掌握了 Adapter: 适配器Adapter是一种结构设计模式,其主要作用是允许不兼容的对象间通过一个转换接口协同工作。 适配器本身扮演的角色是两个对象间的包装器,通过对不兼容的对象进行包装从而生成目标对象的统一接口。 其实现就是适配器从目标对象继承,然后聚合不兼容的对象 #include <iostream> #include <string> class Target { public: virtual ~Target() = default; virtual std::string Request() const { return "Target: The default target's behavior."; } }; class Adaptee { public: std::string SpecificRequest() const{ return ".eetpadA eht fo rovivaheb laicepS"; } }; class Adapter : public Target { private: Adaptee *m_pAdaptee; public: Adapter(Adaptee* pAdaptee):m_pAdaptee(pAdaptee){

「实验 4 类和对象-2」

梦想的初衷 提交于 2020-03-19 07:10:47
1.实验内容2 graph类 /*附加拓展1和2*/ draw()函数的话,因为每一行输出的是空格和规定字符,输出空格数等于 总行数-当前行数 ,输出字符数等于 当前行数*2-1 。 graph.h 1 #ifndef GRAPH_H 2 #define GRAPH_H 3 4 // 类Graph的声明 5 class Graph { 6 public: 7 Graph(char ch, int n); // 带有参数的构造函数 8 void draw(); // 绘制图形 9 void redraw(); //重绘图形 10 void changecolor(); //改变颜色 11 private: 12 char symbol; 13 int size; 14 }; 15 16 17 #endif graph.cpp 1 #include "graph.h" 2 #include <iostream> 3 #include<cstdlib> 4 using namespace std; 5 6 // 带参数的构造函数的实现 7 Graph::Graph(char ch, int n): symbol(ch), size(n) { 8 } 9 10 11 // 成员函数draw()的实现 12 // 功能:绘制size行,显示字符为symbol的指定图形样式 13 //

3、pugixml 改节点名、属性名、属性值

折月煮酒 提交于 2020-03-16 13:30:27
pugi::xml_document doc; if (!doc.load_string("<node id='123'>text</node>", pugi::parse_default | pugi::parse_comments)) return -1;//xml的内容 doc.print(cout);//打印原始内容 // 节点node pugi::xml_node node = doc.child("node"); // 修改节点名,node->notnode std::cout << node.set_name("notnode"); std::cout << ", new node name: " << node.name() << std::endl; // 属性id pugi::xml_attribute attr = node.attribute("id"); // 修改属性名、值,id->key,123->345 std::cout << attr.set_name("key") << ", " << attr.set_value("345"); std::cout << ", new attribute: " << attr.name() << "=" << attr.value() << std::endl; // 再次修改属性id的值,345->1