我在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;
}
答案 0 :(得分:3)
什么是:
void string stringThing (string shiftdir, string &teststring)
摆脱第一个string
。你的函数什么都不返回。
所以,简单地说:
void stringThing(string shiftdir, string &teststring)
您还需要#include <string>
- 在某些情况下,您可能会“幸运”并将其隐含地包含在<iostream>
中,但不要依赖它。
答案 1 :(得分:1)
stringThing
的返回类型必须是void
或 string
,而不是两者。如果要使用字符串,还必须包含<string>
。
由于您要在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&
。