这是一个非常简单的问题,但我完全糊涂了。我想在我的控制台应用程序中打印一个函数的输出。我的功能是:
void Func(char * x)
我称之为:
char a;
Func(& a);
现在我想在 VS2010 的控制台应用程序中打印我的字符串 (a)。我该怎么办?
std::cout << a << std::endl;
或者如果使用 C-:
printf("%c\n", a);
首先,您传递给函数的不是string,而只是指向单个字符的指针。
你问你应该怎么做才能打印那个字符。
从技术上讲,它就像这样简单:
#include <iostream>
void Func( char* x )
{
std::cout << *x << std::endl;
}
int main()
{
char a = 'G';
Func( &a );
}
但是虽然这在技术上是可行的,但可以说,有很多东西会从厕所里跳出来,在一个更大的程序中咬你……
所以让我们从函数签名开始:它的参数和结果。如果要点是函数应该为用作实际参数的变量提供值,那么选择函数结果而不是指针参数。然后不要在函数中执行任何 i/o,因为那样会限制它的实用性,它可以用于:
#include <iostream>
char Func()
{
return 'A';
}
int main()
{
char const a = Func();
std::cout << a << std::endl;
}
另一方面,如果关键在于函数应该显示(或使用)字符值,则按值传递它,如下所示:
#include <iostream>
void Func( char const x )
{
std::cout << x << std::endl;
}
int main()
{
char const a = 'N';
Func( a );
}
另一方面,如果这个想法确实是传递一个字符串,那么使用 a std::string
– 但是我们会进入不太可能的可能性,其中有很多,在这个答案中无法涵盖