클래스를 지정하려면 삽입 및 추출 연산자를 오버로드해야합니다. 콘솔로 인쇄하는 데 문제가 있습니다.C++ flush()가 작동하지 않습니까? endl을 사용할 수 없습니다
이 내 처음으로 게시
미안 편집. 내가 너희들을위한 충분한 정보를 게시하지 않았다 실현, 나는 필요한 코드
driver.cpp
#include "mystring.h"
#include <iostream>
using namespace std;
int main(){
char c[6] = {'H', 'E', 'L', 'L', 'O'}
MyString m(c);
cout << m;
return 0;
}
mystring.h을해야 무엇으로 업데이트 한
class MyString
{
friend ostream& operator<<(ostream&, const MyString&);
public:
MyString(const char*);
~MyString(const MyString&)
private:
char * str; //pointer to dynamic array of characters
int length; //Size of the string
};
의 mystring.cpp
#include "mystring.h"
#include <iostream>
#include <cstring>
using namespace std;
MyString::MyString(const char* passedIn){
length = strlen(passedIn)-1;
str = new char[length+1];
strcpy(str, passedIn);
}
MyString::~MyString(){
if(str != NULL){
delete [] str;
}
}
ostream& operator << (ostream& o, const MyString& m){
for(int i = 0; i < strlen(m.str); i++){
o << m.str[i];
}
o.flush();
return o;
}
관련 'MyString' 코드를 게시하거나'MyString'이 필요하지 않은 [mcve]를 만드는 것이 좋습니다. – juanchopanza
널 문자가 누락되어 있기 때문에 기분이 나아졌습니다. –
또한 m.str이 C 스타일 문자열이면이 코드는 마지막 문자를 버립니다. 표시된 코드에 여러 문제가 있습니다. –