Invalid arguments ' Candidates are: std::basic_ostream<char,std::char_traits<char>> & write(const char *, int) '

const char* p = "hello itcast";

cout.write(p,strlen(p)) << endl;
cout.write(p,strlen(p) - 4) << endl;
cout.write(p,strlen(p) - 4) << endl;

代码十分简单,通过对比vs,得知gcc调用的是ostream.tcc文件中的write函数write(const _CharT* __s, streamsize __n)。

vs中是定义在ostream文件中的write(const _Elem* _Str,streamsize _Count),gcc中有write(const char_type* __s, streamsize __n);源码地址https://gcc.gnu.org/onlinedocs/gcc-4.7.4/libstdc++/api/a01220_source.html

Invalid arguments ' Candidates are: std::basic_ostream<char,std::char_traits<char>> & write(const char *, int) '

原文地址:https://www.cnblogs.com/sageloris/p/11452268.html

时间: 2024-10-08 20:50:26

Invalid arguments ' Candidates are: std::basic_ostream<char,std::char_traits<char>> & write(const char *, int) '的相关文章

C++ std::unordered_map使用std::string和char *作key对比

最近在给自己的服务器框架加上统计信息,其中一项就是统计创建的对象数,以及当前还存在的对象数,那么自然以对象名字作key.但写着写着,忽然纠结是用std::string还是const char *作key,哪个效率高些.由于这服务器框架业务逻辑全在lua脚本,在C++需要统计的对象没几个,其实用哪个没多大区别.我纠结的是,很久之前就知道这两者效率区别不大,但直到现在我都还没搞清楚为啥,于是写些代码来测试. V1版本的代码如下: #ifndef __MAP_H__ #define __MAP_H__

const char* to char*(当函数传递参数时)

来自 https://blog.csdn.net/rongrongyaofeiqi/article/details/52442169 https://blog.csdn.net/hebbely/article/details/79577880 简述: 1) char*转string:可以直接赋值. 2) char[]转string:可以直接赋值. 3) char*转char[]:不能直接赋值,可以循环char*字符串逐个字符赋值,也可以使用strcpy_s等函数. 4) string转char[

[转载] C++ string, const char*, char* 之间互相转换

1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, const char*转string 类型 直接赋值 const char* con_str = "abc"; string str(con_str); 3, string转 char* 类型 借助strcpy函数 string str= "abc"; char* chr;

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针

char*,const char*和string 三者转换

1. const char* 和string 转换 (1) const char*转换为 string,直接赋值即可. EX: const char* tmp = "tsinghua". string s = tmp; (2) string转换为const char*,利用c_str() EX:  string s = "tsinghua"; const char*tmp = s.c_str(); 2. char*和const char*之间的转换 (1) cons

char* const char* string

1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s = "abc"; string s(c_s); 3. string转char* string s = "abc"; char* c; const int len = s.length(); c = new char[len

char*,const char*和string 互转

1. string转const char* 1 string s = "abc"; 2 const char* c_s = s.c_str(); 2. const char*转string 1 //直接赋值即可 2 const char* c_s = "abc"; 3 string s(c_s); 3. string转char* 1 string s = "abc"; 2 char* c; 3 const int len = s.length()

char*,const char*和string的相互转换

好久没写东西啦,发表学术文章一篇,hiahia~ 近日和小佳子编程时遇到很多转换问题,很麻烦,在网上查了很多资料. 为了以后查找方便,特此总结如下. 如果有不对的地方或者有更简单的方法,请指出~~ 1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s = "abc"; string s(c_s)

C++ char*,const char*,string,int 的相互转换

C++ char*,const char*,string,int 的相互转换 1. string转const char* string s ="abc";const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s ="abc";string s(c_s); 3. string转char* string s ="abc";char* c;constint len