cout

在windows环境下用C++完成一个hello/hi网络聊天程序

柔情痞子 提交于 2019-12-10 00:01:15
经过网络程序设计课程的学习,我们了解了socket网络程序编程,接下来,就要学以致用,完成一个hello/hi的网络聊天程序。 Socket介绍 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部。 Socket起源于Unix,而Unix/ Linux 基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式 来操作。Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)。 你想给另一台计算机发消息,你知道他的IP地址,他的机器上同时运行着qq、迅雷、word、浏览器等程序,你想给他的qq发消息,那想一下,你现在只能通过ip找到他的机器,但如果让这台机器知道把消息发给qq程序呢?答案就是通过port,一个机器上可以有0-65535个端口,你的程序想从网络上收发数据,就必须绑定一个端口,这样,远程发到这个端口上的数据,就全会转给这个程序啦。 Socket通信套路 当通过socket建立起2台机器的连接后,本质上socket只干2件事,一是收数据,一是发数据,没数据时就等着。S ocket

C++中的异常处理(中)

我的梦境 提交于 2019-12-09 22:43:14
为什么要在catch中重新抛出异常? #include <iostream> #include <string> using namespace std; void Demo() { try { try { throw 'c'; } catch(int i) { cout << "Inner: catch(int i)" << endl; throw i; } catch(...) { cout << "Inner: catch(...)" << endl; throw; } } catch(...) { cout << "Outer: catch(...)" << endl; } } /* 假设: 当前的函数是第三方库中的函数,因此,我们无法修改源代码 函数名: void func(int i) 抛出异常的类型: int -1 ==》 参数异常 -2 ==》 运行异常 -3 ==》 超时异常 */ void func(int i) { if( i < 0 ) { throw -1; } if( i > 100 ) { throw -2; } if( i == 11 ) { throw -3; } cout << "Run func..." << endl; } void MyFunc(int i) { try { func(i); } catch(int i) { switch

No match for operator << in std::cout [duplicate]

隐身守侯 提交于 2019-12-09 21:48:55
问题 This question already has answers here : no match for ‘operator<<’ in ‘std::operator (4 answers) Closed 2 years ago . I'm trying to print every element inside a vector like this: vector<users>::iterator i; for(i = userlist.begin(); i<userlist.end(); i++) { cout << *i << "\n"; } Then I'm getting an error like this: no match for 'operator<<' in 'std::cout << (&i)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = users*, _Container = std::vector<users, std:

01_C++对C的扩展

淺唱寂寞╮ 提交于 2019-12-09 19:58:25
一:简单的C++程序 1.求圆的周长和面积   数据描述:     半径,周长,面积均用实型数表示   数据处理:     输入半径 r;     计算周长 = 2*π*r ;     计算面积 = π* r2 ;   输出半径,周长,面积; 方法 1 :用结构化方法编程,求圆的周长和面积 // count the girth and area of circle #include<iostream> using namespace std; void main () {   double r, girth, area ;   const double PI = 3.1415 ;   cout << "Please input radius:\n" ; //操作符重载   cin >> r ; //输入   girth = 2 * PI * r ;   area = PI * r * r ;   cout << "radius = " << r << endl ;    cout << "girth = " << girth << endl ;    cout << "area = " << area << endl ; } 方法 2 :用面向对象方法编程,求圆的周长和面积 #include<iostream> using namespace std; class Circle {

how do I write a logger class with cout style interface (logger << “Error: ” << val << endl;)

孤街浪徒 提交于 2019-12-09 18:14:43
问题 I want to create a logger class such that with a functionality like this: Logger log; log << "Error: " << value << "seen" << endl; This should print me a custom formatted message. E.g. "12-09-2009 11:22:33 Error 5 seen" My simple class currently looks like this: class Logger { private: ostringstream oss; public: template <typename T> Logger& operator<<(T a); } template <typename T> Logger& Logger::operator<<(T a) { oss << a; return *this; } void functionTest(void) { Logger log; log << "Error:

【C++】——STL关联式容器认识以及使用

不羁岁月 提交于 2019-12-09 13:38:31
STL关联式容器 关联式容器: 跟STL中的序列式容器是相同的都是用来存储数据,与序列式容器不同的是,关联式容器存储的是<key,value>结构的键值对,在数据检索是,关联式容器的效率比序列式容器更高; 键值对: 用来表示具有一一对应关系的的一种结构;该结构值一般只包含量两个成员变量key和vlaue,其中key代表键值,value表示与key值对应的信息; 关联式容器底层数据结构: 树形结构 和 哈希结构 树形结构: set、map、muitimap、multiset 哈希结构: unordered_map、unordered_set 键值的结构表示: template < class T1 , class T2 > struct pair { typedef T1 first_type ; typedef T2 second_type ; T1 first ; T2 second ; pair ( ) : first ( T1 ( ) ) , second ( T2 ( ) ) { } pair ( const T1 & a , const T2 & b ) : first ( a ) , second ( b ) { } } ; make_pair template < class T1 , class T2 > pair < T1 , T2 > make_pair (

I'm trying to print a Chinese character using the types wchar_t, char16_t and char32_t, to no avail.

情到浓时终转凉″ 提交于 2019-12-09 13:07:27
问题 I'm trying to print the Chinese character 中 using the types wchar_t , char16_t and char32_t , without success (live example) #include <iostream> int main() { char x[] = "中"; // Chinese character with unicode point U+4E2D char y[] = u8"中"; wchar_t z = L'中'; char16_t b = u'\u4e2d'; char32_t a = U'\U00004e2d'; std::cout << x << '\n'; // Ok std::cout << y << '\n'; // Ok std::wcout << z << '\n'; // ?? std::cout << a << '\n'; // prints the decimal number (20013) corresponding to the unicode point U

STL标准库-容器-forward_list

北战南征 提交于 2019-12-09 13:00:38
技术在于交流、沟通,本文为博主原创文章转载请注明出处并保持作品的完整性。 forward_list即单向list,功能少额外开销就小.而且只能在前段插入元素 结构如下 一 定义 #include <forward_list> int main(int argc, const char * argv[]) { //a.定义 list<typeName> name; forward_list<int> l; //b.拷贝构造 forward_list<int> l1(l); //c.拷贝赋值 l1 = l; //d.按指定元素个数定义 含五个默认值是0的元素的链表 forward_list<int> l2(5); //e.指定元素个数及类型 含有5个值为2的链表 forward_list<int> l3(5,2); //f.指定赋值区域 forward_list<int> l4(l1.begin(),l1.end()); for(auto i : l) { cout<< i << endl; } return 0; } 二 与迭代器的使用 由于forward_list的迭代器内指向内存不连续 顾不能做迭代器 "+", "-" 操作 int main() { forward_list<int> l = {1,2,3,4,5,6,7,8,9,10}; //返回迭代器开始之前的位置 l

C++:一段代码,了解拷贝构造函数、move构造函数、拷贝赋值函数、move赋值函数、右值引用

半城伤御伤魂 提交于 2019-12-09 11:58:22
本文纯粹是个整理。 以下代码和图片来自 C++ 11右值引用 。 class CMyString { public: // 构造函数 CMyString(const char *pszSrc = NULL) { cout << "CMyString(const char *pszSrc = NULL)" << endl; if (pszSrc == NULL) { m_pData = new char[1]; *m_pData = '\0'; } else { m_pData = new char[strlen(pszSrc)+1]; strcpy(m_pData, pszSrc); } } // 拷贝构造函数 CMyString(const CMyString &s) { cout << "CMyString(const CMyString &s)" << endl; m_pData = new char[strlen(s.m_pData)+1]; strcpy(m_pData, s.m_pData); } // move构造函数 CMyString(CMyString &&s) // s是个临时对象,右值引用 { cout << "CMyString(CMyString &&s)" << endl; m_pData = s.m_pData; s.m_pData = NULL;

c++ cout格式化输出函数详解

霸气de小男生 提交于 2019-12-09 11:46:34
这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在<sstream>、<fstream>上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。 一、综述 cout是STL库提供的一个iostream实例,拥有ios_base基类的全部函数和成员数据。进行格式化操作可以直接利用setf/unsetf函数和flags函数。cout维护一个当前的格式状态,setf/unsetf函数是在当前的格式状态上追加或删除指定的格式,而flags则是将当前格式状态全部替换为指定的格式。cout为这个函数提供了如下参数(可选格式): ios::dec 以10进制表示整数 ios::hex 以16进制表示整数 ios::oct 以8进制表示整数 ios::showbase 为整数添加一个表示其进制的前缀 ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐 ios::left 在串的末尾插入填充字符以使串居左对齐 ios::right 在串的前面插入填充字符以使串居右对齐 ios::boolalpha