从函数c ++返回字符串[关闭]
Posted
技术标签:
【中文标题】从函数c ++返回字符串[关闭]【英文标题】:Returning a string from a function c++ [closed] 【发布时间】:2013-09-08 15:45:46 【问题描述】:基本上,我想编写一个程序,使用函数在屏幕上显示星号。长度由输入参数指定。所以如果用户输入 2,它将如下所示:
**
**
string myfunct(int thelength)
string s1;
for (int i=1;i<=thelength;i++)
string s1 =+ " * ";
return s1;
【问题讨论】:
是的,你没有问你的问题,但我猜你应该使用+=
而不是=+
。
就我个人而言,我不会使用任何这些,但 return std::string(thelength, '*');
如果您坚持使用循环,请习惯从“索引”零开始并使用 ++i
而不是 i++
(对于int
s 使用什么并不重要,但对于迭代器来说,使用前增量通常比后增量更有效)。
您可能还应该得到一个编译器,警告您的第二个 s1
隐藏了您的另一个 s1
变量。
那么现在你想要什么? n*2 个星号,在不同的行上?
【参考方案1】:
回答原始问题,该问题要求一个函数返回带有n
星号的字符串,其中n
由调用者输入。
std::string
有一个构造函数,它用给定字符的 N 个副本构造一个字符串:
std::string myfunct(int thelength)
return std::string(theLength, '*');
这将返回一个由theLength
星号*
组成的字符串。
【讨论】:
谁给了 -1 ? +1 补偿。 例如,@Mahesh 我做过。提供的方案不符合要求:左右没有空格。 @IInspectable 没有这样的要求。 @juan 如果您阅读原始代码,您会得出相同的结论。 @IInspectable 的重点是提供执行 OP 表达的他们想要的代码,而不是复制代码中的错误。我检查了他们想要为输入 2 创建的字符串,它是两个没有任何空格的星号。【参考方案2】:现有的答案都做错了,你要:
std::string asterisks(int n) return std::string(n, '*');
【讨论】:
除了我的回答 :) 顺便说一句,这也被否决了。 “错误”不准确。次优,是的,但也教 OP 关于循环和范围。 @BenVoigt,没有错,但是做错了。如catonmat.net/blog/wp-content/uploads/2008/12/… @JonathanWakely:不,他们没有做错。假设一组与你不同的约束,也许。 幽默。你是doing it wrong。【参考方案3】:在您的代码中,您在 for 循环中定义了一个局部变量 string s1
,它掩盖了外部定义的变量。因此,在每次迭代中,您将一个星号添加到一个空的 s1
字符串中。此外,将 =+ 替换为 +=。如果想要的输出是:
对于大小 = 2
**
**
对于大小 = 3
***
***
那么你的代码可能是这样的:
#include<iostream>
using namespace std;
string myfunct(int thelength)
string s1;
for (int i=1;i<=thelength;i++)
s1 += " * ";
return s1;
int main()
cout << "Enter no of stars: ";
int size;
cin >> size;
cout << myfunct(size) << endl;
cout << endl;
cout << myfunct(size) << endl;
【讨论】:
在这段代码中不会有换行符 dev++ 给了我一个被拒绝的权限对不起大家 @me.deeiip,对,问题变了以上是关于从函数c ++返回字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章