从函数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++(对于ints 使用什么并不重要,但对于迭代器来说,使用前增量通常比后增量更有效)。 您可能还应该得到一个编译器,警告您的第二个 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 ++返回字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

字符串函数不返回字符串? c++ [关闭]

无法从JNI GetMethodId函数中获取值[关闭]

从 C 函数返回字符串

将 C# 与 C 函数互操作的性能损失 [关闭]

C ++:从函数、返回类型或引用中使用和返回字符数组?

简单的 C 程序。从函数返回的字符串导致错误