#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";
它强调了“=”。
现在,我只想从函数返回一个字符串值。还有更多我需要做的事情,但这是现在的主要问题。
答案 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
打印。我能看到的唯一问题是:
system("pause")
。std::
前缀或导入命名空间不一致。在这方面,我强烈建议使用std::
前缀。我最初只想使用&#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")
完全是多余的,毫无意义,应该删除。事实上,这可能让你感到困惑。