近期研究设计模式,在程序输出时心血来潮用了c版本的printf,结果就蛋疼了,一直输出是乱码,

string s = "中国";

printf("%s" , s);//输出乱码

果断切换成c++版本的cout发现可以正常输出。于是上网找答案,居然惊讶的发现printf输出字符串是针对char *的,换言之,printf只能输出C语言中的内置数据,string不是c语言内置数据。

更深入的来说:s这个string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于是&s并非字符串“中国”的首地址,而是s这个对象的首地址。

所以要做如下操作:

string s = "中国";

printf("%s" , s.c_str());//string中c_str()成员方法返回当前字符串的首字符地址

或cout<<s;//string中重载了“<<”操作符

原文地址:http://blog.csdn.net/spaceyqy/article/details/24840215

printf不能直接输出string类型相关推荐

  1. printf()函数不能直接输出string类型

    因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的. 要这样输出: printf("%s\n",a.c_str()); 举例: #inclu ...

  2. printf输出string类型

    方法 用c_str()函数 C++ string的介绍 string 是C++中的字符串. 字符串对象是一种特殊类型的容器,专门设计来操作的字符序列. 不像传统的c-strings,只是在数组中的一个 ...

  3. 逐梦C++之五:string类型

    1.String对象的定义及其初始化 C++提供string类型来代替C语言中以NULL结尾的char类型数组.string类型支持长度可变的字符串,并可以满足对字符串的一般应用. 例子: //1.几 ...

  4. C++:利用printf 输出string

    目录 1. 要点 2. c_str() 1. 要点 在c++中直接利用printf("%s",s) 是不允许的,因此c++中提供了一个函数c_str()对字符串进行转换,接着再利用 ...

  5. 定义一个泛型为String类型的List集合,统计该集合中每个字符 (注意,不是字符串)出现的次数。例如:集合中有”abc”、”bcd”两个元素, 程序最终输出结果为:

    代码 import java.util.*;/*6.定义一个泛型为String类型的List集合,统计该集合中每个字符(注意,不是字符串)出现的次数.例如:集合中有"abc".&q ...

  6. python string类型的英文句子逆序输出

    输入的是一个string类型的英文句子,输出也是一个string类型的英文句子:是把输入的句子里面的单词按逆序输出,但是每个单词按内部的字符按顺序输出 示例: 输入:i like you, but j ...

  7. 将字符串转换成String类型 eg:String s = “113@ ere qqq yyui“请输出所有子串【split方法】

    package cn.meituan.homework;import java.util.Arrays;/*** String s = "113@ ere qqq yyui"请输出 ...

  8. 使用下标给string类型赋值之后,cout输出变量为空的问题。

    今天写创建文件夹的时候,怎么创建都不会,反复修改,确定错误是出在了string类型的变量上面. 看下面代码 //这个一个函数中的代码,函数参数是string fileurl_sint len = fi ...

  9. C++string类型与C语言字符数组的转换 std::string.c_str()函数

    语法: const char *c_str();搜索 c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过 ...

最新文章

  1. hello world 简单内核模块
  2. 计算机网络---非归零码、曼彻斯特编码和差分曼彻斯特编码
  3. TensorFlow——在web.py、Django环境下TensorFlow(Keras、tf.keras)加载和使用多模型失败解决方案
  4. hibernate_day03_MySQL数据库-表与表之间的多对多关系-实例
  5. [深度学习基础] 1. 图像识别问题的挑战及数据驱动过程
  6. Thinkphp 配置不用输入index.php
  7. sdut 数据结构实验之排序三:bucket sort
  8. 小技巧来助阵 玩转Chrome浏览器
  9. 如何将pytorch检测模型通过docker部署到服务器
  10. linux 修改时间 date
  11. 【日常记录】CTF审查清单(windows)
  12. javaScript之原生js封装组件(弹窗为例)
  13. Centos7防火墙iptables安装及设置图文并茂【实现防火墙管理功能】
  14. DBeaver:开源、跨平台、强大的数据库管理工具
  15. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)
  16. (待优化修改)vivado DDR4 SDRAM(MIG)(2.2) IP核学习记录
  17. HDU-2594 Simpsons’ Hidden Talents
  18. android p2p 学习
  19. .netcore-线程池饿死问题分析(CPU空闲,并发量大时请求超时)
  20. 分布式数据库架构及企业实践(基于Mycat中间件)——1

热门文章

  1. 调整亮度_【紫墨手机摄影课堂】图片调整
  2. 8s pod 查看 的yaml_Kubernetes入门到实战(五)深入浅出详解Pod
  3. android 北斗定位代码_大牛三步教你解决,BAT资深APP性能优化系列-卡顿定位问题,收藏哦
  4. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat
  5. 关于Qt QFileDevice::map()接口的一些学习记录
  6. redis操作帮助类
  7. linux如何ARP嗅探 Linux下嗅探工具Dsniff安装记录
  8. 10个让人厌烦的编程语言
  9. MaxReceivedMessageSize :已超过传入消息(65536)的最大消息大小配额
  10. tomcat启动时错误:Cannot rename original file to *.tomcat-users.xml.old