`
东边日出西边雨
  • 浏览: 262291 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++中函数参数返回值用string好还是const char *好

    博客分类:
  • c
 
阅读更多

有这样一个函数test需要两个字符串作为参数,那么test的原型定义成test(string, string)呢还是定义成test(const char*, const char*)还是其他呢?

 

当这样使用时 test("hello", "world"); 如果原型是第一种,就需要首先构建string对象,然后因为是值传递需要内存拷贝。

如果是第二种,由于需求是需要两个string型变量,参数传进来之后还得转换成string型,如:

string a(A);

string b(B);

这也不省事,如果用另外一种就非常好了,就是传递string引用,原型声明为test(const string& A, const string& B)字符串传递进来时,并没有发生内存拷贝,效率会很高,并且AB可以直接当成string型来用,也比第二种方便。

 

关于函数的返回值,最好还是返回“值”吧,最好不要返回地址啊引用啊什么的,因为你不清楚使用者会不会改变这些值,如果返回的是引用,内存中只有一份,如果用户修改了值,势必会影响到其他的。

 

所以这个函数的原型最好是 string test(const string& A, const string& B)

分享到:
评论

相关推荐

    std::string、char*、const char*转托管byte数组或托管字符串String

    std::string是C++的标准字符串类,它可以使用c_str()函数将其转换为char*类型,然后使用Marshal::Copy函数将其拷贝到托管的byte数组中,最后使用System::Text::Encoding::UTF8->GetString函数将byte数组转换为托管的...

    golang调用c++DLL传递char*型参数读取返回char*字符串内容

    golang调用c++DLL返回值为char*参数为const char*,读取返回DLL返回值,传递char*型参数

    strcpy原型

    4. **使用安全替代**: 在现代 C/C++ 编程中,建议使用更安全的替代函数如 `strncpy` 或者 C++ 中的 `std::string` 类来避免潜在的安全风险。 #### 五、总结 `strcpy` 函数是 C 语言中用于字符串复制的一个基础且...

    c++中const用法总结

    例如,在函数`void StringCopy(char* strDestination, const char* strSource)`中,`strSource`作为输入参数被加了`const`,这样如果尝试在函数内部修改`strSource`的内容,编译器会报错。 - 对于采用“值传递”的...

    const在c++中的用法

    `const` 关键字在 C++ 中的应用非常广泛,不仅限于简单的常量定义,还包括了更复杂的指针类型定义、形参和返回值的限定以及 `const` 成员函数的使用等。正确理解和灵活运用 `const` 不仅能够提高代码的质量,还能...

    C++string类常用函数

    ### C++ `string` 类常用函数详解 ...通过以上详细介绍,我们可以看到 `string` 类在 C++ 中的强大功能,它不仅提供了丰富的构造和操作函数,还提供了多种字符串处理功能,极大地简化了字符串的使用和管理。

    Const,Const函数,Const变量,函数后面的Const[参考].pdf

    Const 关键字是 C++ 语言中一个非常重要的关键字,它可以用来修饰变量、函数参数、函数返回值等,以确保程序的健壮性和可靠性。 Const 关键字的主要作用是防止意外的变动,提高程序的可靠性和健壮性。 一、Const ...

    c++ 字符串函数个人整理

    7. **`char* strstr(const char* string, const char* strSearch);`** - **功能**:在字符串 `string` 中查找子字符串 `strSearch` 的第一次出现的位置。 - **参数**: - `string`:主字符串的指针。 - `...

    Const,Const函数,Const变量,函数后面的Const.txt

    在这个例子中,`strSource`被声明为`const char*`,这表明在`StringCopy`函数内部不能修改通过`strSource`指向的数据。这种做法的好处在于确保了源字符串不会因为错误的操作而被无意中修改。 - **注意事项**: - ...

    C#调用C++编写的DLL函数各种参数传递问题

    1. 不返回值的参数  C++ 原型:  bool SendNewSms(char *szTel, char *szMessage);  C#引用;  [DllImport( CdmaCard.dll,EntryPoint=SendNewSms)]  public static extern bool SendNewSms(string ...

    C++程序中导出Word文档的简易方法

    std::string put_title(const char* title, const char* title_type = "标题1", int align = ALIGN_LEFT); std::string put_title1(const char* title, int align = ALIGN_CENTER); std::string put_title2(const ...

    C++技术参考

    ### C++技术参考手册知识点详解 #### 字符串函数概览 在C++编程中,字符串处理是一项基本而重要的任务。...需要注意的是,在使用这些函数时应确保输入参数的正确性,避免出现内存访问错误或溢出等问题。

    C++之const详解

    当一个函数参数被定义为输入参数时,推荐使用`const`关键字来修饰,这样可以避免意外修改该参数。例如: ```cpp void StringCopy(char* strDestination, const char* strSource); ``` 在这个例子中,`strSource`被...

    C++ 调用带参数EXE

    这些函数不返回,除非执行失败,因此在C++中通常不用于直接调用EXE,因为无法处理返回值或控制窗口行为。例如`execl("/path/to/exe", "exe_name", "arg1", "arg2", NULL)`。 3. **使用`WinExec`函数** 在Windows...

    string字符串处理.docx

    在C++编程中,字符串处理是至关重要的一个环节,特别是在处理文本数据时。`string.h`库提供了多种处理C...此外,为了提高代码的安全性,建议使用C++标准库中的`std::string`类,它提供了更安全和方便的字符串操作接口。

    C语言string类的实现

    根据给定的代码片段,我们可以深入探讨C语言中与字符...这些函数构成了C语言中处理字符串的基本工具集,它们的正确使用对于字符串处理任务至关重要。理解每个函数的工作原理和适用场景是编写健壮、高效的C程序的关键。

    c/c++字符串操作大全

    本篇文章将详细介绍几个常用的字符串操作函数及其使用方法,包括`stpcpy`、`strcat`、`strchr`、`strcmp`、`strncmpi`、`strcpy`以及`strcspn`。 #### 1. stpcpy - 拷贝一个字符串到另一个 - **函数定义**: ```c...

    C++_const_精髓

    例如,`void StringCopy(char *strDestination, const char *strSource)`函数中,`strSource`被`const`修饰,确保了函数不会修改源字符串的内容,从而避免错误。然而,对于输出参数,如`int x`或自定义类型`A a`,不...

Global site tag (gtag.js) - Google Analytics