gpt4 book ai didi

c++ - 将字符串中带有 NULL 字符的字符串数据复制到 char 数组

转载 作者:行者123 更新时间:2023-11-28 06:58:01 24 4
gpt4 key购买 nike

我正在尝试将一个字符串复制到 char 数组,字符串有多个 NULL 字符。我的问题是当遇到第一个 NULL 字符时,我的程序停止复制字符串。

我使用了两种方法。这就是我到目前为止的情况。

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
std::string str = "Hello World.\0 How are you?\0";
char resp[2000];
int i = 0;
memset(resp, 0, sizeof(resp));
/* Approach 1*/
while(i < str.length())
{
if(str.at(i) == '\0')
str.replace(str.begin(), str.begin()+i, " ");
resp[i] = str.at(i);
i++;
}
/* Approach 2*/
memcpy(resp, str.c_str(), 2000);
cout << resp << endl;
return 0;
}

这个程序应该打印Hello World。你好吗?。请帮助我更正此问题。

最佳答案

你也可以一次性使用

std::transform(
str.begin(), str.end(), resp, [](char c) { return c == '\0' ? ' ' : c; }
);

当然,正如@Mats 提到您的字符串没有任何空字符,字符串也可以按如下方式初始化:

char const cstr[] = "Hello World.\0 How are you?";
std::string str(cstr, sizeof cstr);

C++14 有一个 std::string 文字运算符

std::string str = "Hello World.\0 How are you?"s;

关于c++ - 将字符串中带有 NULL 字符的字符串数据复制到 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22907430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com