gpt4 book ai didi

c++ - 在函数的输入参数中用 std::string 替换 char 数组

转载 作者:太空宇宙 更新时间:2023-11-04 11:39:08 24 4
gpt4 key购买 nike

以下是两个遗留例程。我无法更改例程声明。

static bool GetString(char * str);        //str is output parameter
static bool IsStringValid(const char * str); //str is input parameter

调用如下

char inputString[1000];

GetString(inputString);

IsStringValid(inputString);

我想使用 std::string 作为输入,而不是使用固定的字符数组。我无法获得正确的语义(string::c_str)。

最佳答案

使用 IsEmpty 应该不是问题:

std::string str = "Some text here";
IsEmpty(str.c_str());

虽然如果你有一个 std::string 就没用了那样你通常会调用str.empty() .


不过,另一个功能更难。原因是它的参数不是const,并且std::string 不允许您使用指针修改字符串。

可以解决这个问题,方法是编写一个包装函数,它接受一个字符串引用,并有一个用于实际 GetString 调用的内部数组,并使用该数组初始化传递的字符串引用。


包装示例:

// Function which "creates" a string from scratch
void GetString(std::string& str)
{
char tempstr[4096];
GetString(tempstr);
str = tempstr;
}

// Function which modifies an existing string
void ModifyString(std::string& str)
{
const size_t length = str.size() + 1;
char* tempstr = new char[length];
std::copy_n(str.c_str(), tempstr, length);

ModifyString(tempstr);

str = tempstr;
delete[] tempstr;
}

关于c++ - 在函数的输入参数中用 std::string 替换 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22100542/

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