我在main.cpp中遇到重做字符(以粗體顯示)的錯誤,當我明顯地在上面聲明它時。我也想知道爲什麼它要求我在使用名稱空間前加一個分號,因爲我從來沒有這樣做過。重做字符未聲明尚未聲明
//ReverseString.h
#include <iostream>
#include <string>
using namespace std;
class StringClass
{
public:
string string;
int GetStringLength (char*);
void Reverse(char*);
void OutputString(char*);
void UserInputString (char*);
StringClass();
private:
int Length;
}
//StringClass.cpp
#include <iostream>
#include <string>
#include "ReverseString.h"
;using namespace std;
void StringClass::UserInputString(char *string)
{
cout << "Input a string you would like to be reversed.\n";
cin >> string;
cout << "The string you entered: " << string << endl;
}
int StringClass::GetStringLength (char *string)
{
Length = strlen(string);
return Length;
}
void StringClass::Reverse(char *string)
{
int c;
char *front, *rear, temp;
front = string;
rear = string;
GetStringLength(string);
for (c = 0 ; c < (Length - 1) ; c++)
rear++;
for (c = 0 ; c < Length/2 ; c++)
{
temp = *rear;
*rear = *front;
*front = temp;
front++;
rear--;
}
}
void StringClass::OutputString(char *string)
{
cout << "Your string reversed is: " << string << ".";
}
//Main.cpp
#include <iostream>
#include <string>
#include <fstream>
#include "ReverseString.h"
;using namespace std;
const int MaxSize = 100;
int main()
{
do
{
char string[MaxSize];
**char redo;**
StringClass str;
str.UserInputString(string);
str.Reverse(string);
str.OutputString(string);
//Asks user if they want redo the program
cout << "Would you like to redo the program?\n";
cout << "Please enter Y or N: \n";
**cin >> redo;**
}while(redo == 'Y' || redo == 'y');
}
它真的令人困惑,爲什麼它聲明它,但給一個錯誤,它沒有聲明。
您正在尋求使用該輸入函數的緩衝區溢出。分號不會在using指令之前出現。它遵循之前的代碼(請記住#includes是複製粘貼的)。 – chris
如何限制輸入中的緩衝區溢出? @chris – PhotographyBum
只需輸入一個'std :: string'而不是'char *'。 – chris