Return 一个字符串/通过引用传递

Return a string / pass by reference

我正在为连接了一些硬件的 Arduino 板编写一些 C++ 代码。在代码的不同位置,我需要构建一个包含各种附加硬件值的字符串,并将其作为命令的一部分通过串行发送。因为它需要成为通过串行发送的非常具体的命令的一部分,所以我首先构建它并在整个命令准备就绪时发送它。

目前我正在通过下面的函数进行操作

'String constructDataString ()
 {
    // Set up data to transmit
    String dataStr = String(var1);                          
    dataStr += ",";
    dataStr += String(var2);
    dataStr += ",";
    dataStr += String(var3);        
    dataStr += ",";
    dataStr += String(var4);    
    dataStr += ",";
    dataStr += String(var5);                            

    return dataStr;
 }'

然后我用

调用它
String dataString = constructDataString ();

我想知道是否可以通过在 main 中声明一个字符串然后通过引用将其传递给函数并允许函数直接修改它来实现这一点。我已经尝试了几种方法,但无法使其正常工作。我尝试了类似下面的方法,但不太熟悉这样做,所以我希望有人能提供帮助。

原型

void constructDataString (String* extString)

主线调用

String dataString =””;
String* dataStringPtr = & dataString;
constructDataString (dataStringPtr);

函数

void constructDataString (String* extString)
{
 // Set up data to transmit
    extString = String(var1);                           
    extString += ",";
    extString += String(var2);                                  
    extString += ",";
    extString += String(var3);      
    extString += ",";
    extString += String(var4);  
    extString += ",";
    extString += String(var5);
}

当然可以。但是在 constructDataString 的正文中,您需要使用 *extString 而不是 extString 来取消引用指针。 否则,您可以在 C++ 中使用引用。

根据参考,代码为:

void constructDataString (String& extString)
{
 // Set up data to transmit
    extString = String(var1);                           
    extString += ",";
    extString += String(var2);                                  
    extString += ",";
    extString += String(var3);      
    extString += ",";
    extString += String(var4);  
    extString += ",";
    extString += String(var5);
}

然后您按如下方式使用它:

String dataString =””;
constructDataString (dataString);