吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 570|回复: 14
收起左侧

[讨论] c++中两个string相加,不会去掉第一个string末尾的\0吗

  [复制链接]
pananning 发表于 2024-7-29 05:02
调api要用c风格字符串,就用了.c_str()方法,一开始不知道,找了半天才发现被中间\0截断了,一直失败
除了自己实现,c++有没有把两个string拼接成一个c风格字符串的运算

免费评分

参与人数 1吾爱币 +1 收起 理由
辛五味la + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

havonz 发表于 2024-7-29 05:17
string 末尾没有 0
只有使用 .c_str() 方法转换的时候,才会有
richard_ljd 发表于 2024-7-29 07:08
我自己记忆里没有(悲),或许你可以
memcpy(buffer1,str1.c_str(),str1.length()-1);
memcpy(buffer2,str2.c_str(),str2.length()-1);
如果直接c_str会带一个\0的话那么就少复制一位?
然后用fprintf什么的拼接起来
cao777 发表于 2024-7-29 07:14
string末尾没有\0 前几天项目里string转char*时 用了很久的release模式没问题 改成debug报错才发现这个问题
only998 发表于 2024-7-29 08:24
string末尾没有\0,有的话是你创建string的时候把  \0一起加入到了数据里面。
yes2 发表于 2024-7-29 09:05
[C++] 纯文本查看 复制代码
    std::string str1 = "123";
    std::string str2 = "456";
    std::string str3 = str1 + str2;
    printf("%s\n",str3.c_str());

输出123456。
没有遇到你说的\0问题。你的代码和用例是什么样子的?可以贴一下
LMZQ 发表于 2024-7-29 09:07
先加完再转吧,string可以直接加的, .c_str() 后才有这个\0
jamesAbc 发表于 2024-7-29 09:10
string里面是没有\0的,你用c_str()和c_data()才会追加\0
huoxx007 发表于 2024-7-29 10:08
你是不是先将string转unsigned char *之后,再合并unsigned char *的,顺序反过来就行
Kmover 发表于 2024-7-29 10:12
c_str()返回一个指向以 null 结尾的字符数组的指针, 即\0作为字符串的结束标志
也就是c_str()给你加上的\0.两个方法,先处理,后输出

[C++] 纯文本查看 复制代码
#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello";
    std::string str2 = "World";

     str1.append(str2);
     //printf("%s\n", str1.c_str()); 
     size_t len = str1.size();
    // 使用 fwrite 来避免 printf 在遇到 null 终止符时停止输出
    fwrite(str1.data(), sizeof(char), len, stdout);
    return 0;
    return 0;
}



[C++] 纯文本查看 复制代码
#include <iostream>
#include <string>

int main() {
    std::string str1 = "Hello";
    std::string str2 = "World";

    str1 += str2;
    //printf("%s\n", str1.c_str()); 
    size_t len = str1.size();

    // 使用 fwrite 来避免 printf 在遇到 null 终止符时停止输出
    fwrite(str1.data(), sizeof(char), len, stdout);
    return 0;
}
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 07:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表