gpt4 book ai didi

c++ - 使 C++ 将 unsigned char* 视为 char*

转载 作者:行者123 更新时间:2023-11-30 05:36:24 24 4
gpt4 key购买 nike

我通过大量调用 x.append(p, len) 继承了 C++ 源文件,其中 x 是字符串类型。然而,在很多情况下,p 的类型是“unsigned char *”,它在我的 g++(版本 4.8.4)上导致了很多错误。如果我手动更改 p(char*)p ,它将起作用。但是这样的例子太多了(可怜的我!)。

想知道是否有办法告诉 g++ 只处理 unsigned char*作为char * .

谢谢。

更新 1

以下代码片段在使用命令行编译时会报错g++ -std=c++11 -fpermissive te1.cc .但是,当变量类型为 len 时,它实际上编译(很好但有警告)从 int 更改为至 size_t .不幸的是我不能改变参数的类型,想知道是否有办法告诉编译器只将第二个参数视为 size_t在搜索 append() 的版本时方法。

//content of te1.cc
#include <iostream>

typedef unsigned char uchar;
using namespace std;
string x = "hi ";

int main(int argc, char *argv[]) {
uchar *p = (uchar *)"tom";
int len = 3;
x.append(p, (size_t)len);
cout << x << endl;
return 0;
}

最佳答案

编辑:

扩展 C++ string 类可能不是一个好主意 (see that question)。

我不知道你的代码在什么上下文中使用了 append 方法,但你可以尝试使用你最喜欢的编辑器和一个简单的正则表达式来添加类型转换:

寻找模式:

append\(([^,\)]+),([^\)]*)\);

替换模式:

append((char *)($1),$2);

参见 small example我做了。

关于c++ - 使 C++ 将 unsigned char* 视为 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575067/

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