0

好的,这就是我所拥有的,但我收到一条错误消息:“complexReverseString”:找不到标识符???我哪里错了我看了一遍无济于事

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    ifstream input;
    string forward;

    cout << "Please enter a string to see its reverse. (Will display reverse twice)" << endl;
    input.open("information.txt");
    cin >> forward;
    //reverseString(forward, findStringSize(forward)); a function I'm not actually calling
    input >> forward;
    complexReverseString();

    input.close();


}
int complexReverseString(string userInput)
{
    string source(userInput);
    string target( source.rbegin(), source.rend() );
    cout << "The reversed string is " << target << endl;

    return 0;
}
4

4 回答 4

4

complexReverseString()在调用它之前,您必须先进行原型设计。

main在入口点之前的源文件中执行此操作,如下所示:

int complexReverseString(string userInput);
int main() { ... }

或在单独的标题中执行此操作:

#ifndef COMPLEX_STR_HPP
#define COMPLEX_STR_HPP

int complexReverseString(string userInput);

#endif /* COMPLEX_STR_HPP */

/* int main.cpp */
#include "complex_str.hpp"

int main() { ... }

其次,您忘记将参数传递给函数:

 complexReverseString( /* parameter here */ );

 e.g
 complexReverseString(forward);

第三,由于您没有更改字符串,complexReverseString()我建议您使用const字符串,并且可能是对字符串的引用:

int complexReverseString(const string& userInput);
于 2012-04-23T02:41:27.643 回答
2

您需要将参数传递给方法吗?因为您的方法需要一个类型的参数,string否则您需要重载它。它目前正在失败,因为它正在寻找函数定义complexReverseString()

将您的代码更改为

complexReverseString(forward);
于 2012-04-23T02:41:36.360 回答
2

在 C++ 中没有显式循环的情况下反转字符串或任何其他容器的最简单方法是使用反向迭代器:

string input;
cin >> input;
// Here is the "magic" line:
// the pair of iterators rbegin/rend represent a reversed string
string output(input.rbegin(), input.rend());
cout << output << endl;
于 2012-04-23T02:46:26.440 回答
2

在 C/C++ 中,编译器从上到下读取源代码。如果您在编译器读取方法之前使用它(例如,当方法定义在底部,并且您正在使用它main()并且main()位于顶部时),编译器将不会运行项目中的所有源/头文件/folder 直到找到方法或浏览完所有文件。

您需要做的是对您的方法进行原型设计,或者在顶部定义它。

函数原型基本上是一个方法头,用于通知编译器该方法将在源代码的其他位置找到。

原型:

#include <iostream>    
#include <fstream>    
#include <string>

using namespace std;

// DEFINE PROTOTYPES BEFORE IT'S CALLED (before main())
int complexReverseString(string);

int main()    
{    
    // your main code
}    

int complexReverseString(string userInput)    
{    
    // your reverse string code
}

原型设计将允许您更轻松地查看方法和方法标头。

compledReverseString()在顶部定义:

#include <iostream>    
#include <fstream>    
#include <string>

using namespace std;

// DEFINE METHOD BEFORE IT'S CALLED (before main())
int complexReverseString(string userInput)    
{    
    // your reverse string code
}

int main()    
{    
    // your main code
}

这些样式中的任何一种都会产生相同的结果,因此由您决定要使用哪一种。

除此之外,当你调用complexReverseString()main 时,你忘记传递它的参数,应该是forward. 所以不是complexReverseString(),而是complexReverseString(forward)

于 2012-04-23T03:08:00.297 回答