7

我正在用 C++ 让自己焕然一新(从学校开始就没有这样做过),我写了一个简单的程序只是为了搞砸。我的问题是,当我编译程序时它会阻塞说明“错误:'stringThing'之前的预期初始化程序”是否有这样做的原因?我知道这可能是一个菜鸟问题,所以我检查了 stackoverflow 并找不到任何给我答案的相关问题。

*我正在使用 GNU GCC 编译器

代码:

#include <iostream>

using namespace std;

void string stringThing (string shiftdir, string &teststring)
    {
        if (shiftdir == "right")
        {
           teststring = teststring >> " " >> "Bit Shifted right";
        }
        else
        {
           teststring = teststring << " " << "Bit Shifted left";
        }
    }
int main()
{

    string test;

    cout << stringThing("right", "I have done a ") << endl;

    return 0;
}
4

2 回答 2

5

的返回类型stringThing必须是void string,而不是两者。<string>如果要使用字符串,还必须包含,。

既然要输出 in 的返回值stringThing()main我猜应该是

std::string stringThing (std::string shiftdir, const std::string &teststring)

但是,您还必须从函数中返回一个字符串

if (shiftdir == "right")
    return teststring + " " + "Bit Shifted right";
else
    return teststring + " " + "Bit Shifted left";

例如。

您的参数std::string &teststring不适用于您的const char*参数。因此,要么仅将其声明为按值复制string,要么更好const string&

于 2013-01-14T15:59:59.933 回答
4

返回类型是……时髦

什么是:

void string stringThing (string shiftdir, string &teststring)

?

摆脱第一个string。您的函数不返回任何内容。

所以,简单地说:

void stringThing(string shiftdir, string &teststring)

包含缺失

您还需要#include <string>— 在某些情况下,您可能会得到“幸运”,并且将其隐式包含在 中<iostream>,但不要依赖它。

于 2013-01-14T15:58:49.540 回答