C中string打印

代码:
std::string s="aaa";
printf("%s\n",s);
编译报错:
error: cannot pass objects of non-trivially-copyable type ‘std::string {aka class std::basic_string}’ through ‘...’
修改:
printf("%s\n",s.c_str());
### C语言中字符串的使用方法 #### 基础概念 在C语言里,字符串被定义为字符数组。每一个字符串实际上是以空字符 `\0` 结束的一维字符数组[^1]。 #### 定义与初始化 可以采用如下方式来创建并初始化一个字符串: ```c char greeting[] = "Hello"; // 或者更显式地指定长度 char name[6] = {'S', 't', 'e', 'v', 'e', '\0'}; ``` 上述两种形式均表示相同的含义——即存储了一个名为 `greeting` 和 `name` 的字符串变量。 #### 访问单个字符 由于字符串本质上就是字符数组,因此可以通过索引来访问其中任何一个单独的字符: ```c printf("%c", greeting[0]); // 输出 H ``` 这段代码会打印出第一个位置上的字母'H'。 #### 字符串连接 对于两个已有的字符串A和B来说,如果想要把它们拼接成一个新的较长字符串,则需要用到标准库函数`strcat()`来进行操作: ```c #include <string.h> char destination[50]; strcpy(destination, "This is "); strcat(destination, "a concatenated string."); puts(destination); ``` 此程序片段先将"This is "拷贝至destination缓冲区,再追加"a concatenated string."形成最终的结果[^2]。 #### 获取子串 当需要提取原字符串中的某一部分作为新的独立字符串时,可借助于`substr()`功能(注意,在纯C环境下通常不会直接提供该接口;这里可能是基于某些扩展环境下的描述)。而在原始C环境中实现类似效果的方法通常是通过手动计算偏移量以及目标区域大小后利用memcpy完成数据搬运工作。 #### 遍历整个字符串 为了逐一遍历字符串里的各个元素,一般推荐的方式是从头到尾循环读取直到遇到终止符`\0`为止: ```c for (int i=0; str[i]!='\0'; ++i){ putchar(str[i]); } putchar('\n'); ``` 以上代码展示了如何顺序输出给定字符串内的全部字符[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值