C++ ostream类为下面的指针类型定义了插入运算符函数:
const signed char *; const unsigned char *; const char *; void *;
#include <iostream> using namespace std; int main() { char name[] = "Kecily!"; char *Name = "yuting"; cout << name << endl; cout << Name << endl; }
Kecily! yuting
#include <iostream> using namespace std; int main() { char name[] = "Kecily!"; char *Name = "yuting"; cout << name << endl; cout << *Name << endl; }
Kecily! y
那如果我要输出指向这个字符串的指针的地址呢,也就是指针的值;
思路解析: 对于其他类型的指针,如果要对其地址的输出,直接输出其指针即可,但是对于字符串不一样,因为其本身的指针名代表了整个字符串,所以就需要用另外一种表示方法对其地址进行输出:
#include <iostream> using namespace std; int main() { int m = 59; char *name = "yuting"; cout << &m << endl; cout << (void *)name << endl; }
先说put吧, put适用于字符输出,但是也可以对整型数字进行输出,不过进行put调用输出后的整型数字就自动转换成了char型数字字符了,输出对应ASCII字符值;
而且哦,put还可以拼接输出哦,好强大!
#include <iostream> #include <string> using namespace std; int main() { int i; string name = "Kecily"; for(i=0; i<name.length()-1; i++) { cout.put(name[i]).put('-'); //对象调用输出,以及拼接输出; } cout.put(name[i]).put('\n'); }
K-e-c-i-l-y
#include <iostream> using namespace std; int main() { int m = 67; cout.put(m).put('\n'); }
write函数的原型:
basic_ostream<charT, traits>& write(const char_type* s, streamsize n);第一个参数为要显示的字符串的地址,第二个参数为要显示字符串的多少个字符;
这个函数有点奇怪,看一下例子吧:
#include <iostream> #include <cstring> using namespace std; int main() { const char *str = "XiaoHui"; int len = std::strlen(str); for(int i=1; i<=len; i++) { //注意喔,这里是从1开始喔; cout.write(str, i) << endl; } return 0; }
运行结果:
X Xi Xia Xiao XiaoH XiaoHu XiaoHui
另外,write函数并不会在遇到空字符时自动停止打印字符,而是打印指定数目的字符:
#include <iostream> #include <cstring> using namespace std; int main() { const char *s1 = "hello world!"; const char *s2 = "bai bu chuan yang!"; int len = std::strlen(s1); cout.write(s1, len+8) << endl; }
hello world! bai bu
cout 输出字符串(指针)常见问题及put,write函数
原文地址:http://blog.csdn.net/keshacookie/article/details/41512643