gpt4 book ai didi

c++ - 字符串到 char* 的转换

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:49 25 4
gpt4 key购买 nike

我在一个代码库中,其中有很多函数调用以指针作为参数的函数。但是,函数调用传递一个“字符串”对象,就好像它是指针一样。以下代码旨在为您提供思路。

#include <vector>
#include <unordered_map>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <string>

using namespace std;

void dum(char *s) {
printf("%s\n", s);
}

operator char* (string s) {
return s.c_str();
}

int main(int argc,char *argv[]) {
string st("Hello world");
dum(st);
return 0;
}

我不允许更改所有这些函数或函数调用的语法。我想出的一个可能的解决方案是添加一个运算符重载,但不幸的是它不起作用,这是来自 g++(ver 4.7.3)的错误,命令行:g++ -std=c++11 te2。抄送

error: ‘operator char*(std::string)’ must be a nonstatic member function

有什么想法吗?谢谢。

更新1

@ferruccio 的回答提醒我提到有像这样的函数调用

dum(dum2());

其中 dum2() 是一个函数,如下所示:

string dum2() {
string s;
//.....
return s;
}

所以像下面这样的包装器不起作用(),编译器给出错误no matching function for call to ‘dum(std::string)’

void dum(string &s) {
dum(s.c_str());
}

最佳答案

operator char* (string s) {
return s.c_str();
}

这是坏的(如果允许的话)。当此函数返回时,s 不再存在。因此指向其内容的指针是没有用的。

关于c++ - 字符串到 char* 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30927199/

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