如何从C ++中的函数返回字符串值

时间:2014-02-08 14:35:48

标签: c++ string function

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

std::string dispCard(int card)
{
    string textCard = "help";
    //cout << textCard;

    system("pause");
    return textCard;
}

int main()
{
    // Using this area to test functions for now
    cout << dispCard(14);

    return 0;
}

取消注释cout行实际上会显示该值。但我无法返回字符串中的值。

老实说,我不知道为什么这不起作用。我最初只是想使用“char”,但由于某种原因这不起作用。

Visual Studio不喜欢:

char test;
test = "help";

它强调了“=”。

现在,我只想从函数返回一个字符串值。还有更多我需要做的事情,但这是现在的主要问题。

4 个答案:

答案 0 :(得分:1)

我认为您需要将int传递给您的函数并以字符串形式返回。要进行此转换,您需要以下内容:

std::ostringstream stm;
stm << yourIntValue;
std::string s(stm.str());

或者这个:

char bf[100];
sprintf(bf, "%d", yourIntValue);
std::string s(bf);

如果你将这个片段放在一个函数中,那么你也可以接受一个int参数,将它转换为std :: string并返回std :: string,正如其他人所示。

答案 1 :(得分:1)

  

取消注释cout线实际上会显示字符串。但是没有返回字符串。

您的计划both prints and returns the string,再次在main打印。我能看到的唯一问题是:

  1. 您无缘无故地使用system("pause")
  2. 您与使用std::前缀或导入命名空间不一致。在这方面,我强烈建议使用std::前缀。
  3. 您没有使用函数参数。

  4.   

    我最初只想使用&#34; char&#34;但由于某种原因,这并不起作用。

    嗯,char,顾名思义,只能存储1个字符。在:

    char test = "help";
    

    你试图将5个字符(4 + \0)分配给一个只能存储1的对象。这就是编译器抱怨的原因。

答案 2 :(得分:0)

您需要做的是将函数的返回类型声明为std::string,然后返回一个字符串对象,可以隐式转换为字符串对象或显式构造字符串对象的东西。

示例:

std::string foo(){
    return "idkfa"; //return C-style string -> implicitly convertible to string
    return {"idkfa"}; // direct initialization of returning std::string
    return std::string("idkfa"); //return explicitly constructed std::string object
}

另请注意,C样式字符串的类型为char*(C样式的字符串基本上是chars的数组,最后一个元素是\0,即0。 / p>

答案 3 :(得分:0)

您的代码works perfectly fine,虽然system("pause")完全是多余的,毫无意义,应该删除。事实上,这可能让你感到困惑。