【发布时间】:2015-05-28 05:58:06
【问题描述】:
我正在为我的课程编写代码,但我遇到了一个问题。我以前从未在 C++ 中处理过字符串,而且我不知道如何将一个字符串分成另外两个。程序也可以编译,但输出错误,我怀疑构造函数。有人可以看看并给我一个回答,我应该改变什么才能使代码正常工作吗?我将不胜感激:)
代码如下: main(老师给的)
int main()
{
oop::Data a;
oop::Data b;
{
MACRO1;//co tu ma się dziać?
Data b;
}
const oop::Data Data_element = "Test-first"; // tworzony jest obiekt const o nazwie Data_element klasy Data, do którego wpisywany jest teks
const oop::Data c(Data_element, "Test-second"); // wywołanie konstruktora
a.full_data("Pierwszy Drugi");
b.first() = b.second("Tekst testowy"); //co tu ma się dziać?
std::cout
<< "a = " << a << std::endl;
std::cout
<< "b = " << b.full_data() << std::endl;
std::cout
<< "c = " << c.first() << ", " << c.second() << std::endl;
const oop::Data d = a.to_upper(); //zamienia na WIELKIE litery
oop::Data e = d.to_lower(); //zamienia na mnałe litery
std::cout
<< "d = " << d << std::endl;
std::cout
<< "e = " << e << std::endl;
}
/* Output:
a = ["Pierwszy", "Drugi"]
b = ["Tekst testowy", "Tekst testowy"]
c = Test-first, Test-second
d = ["PIERWSZY", "DRUGI"]
e = ["pierwszy", "drugi"]
*/
.h 文件:
#define MACRO1 using namespace oop;
//Makro !
#include <string>
#include <iostream>
namespace oop{
class Data
{
public:
Data(const char*);//Konstruktor ma przyjac const char* a nie string bo " text " to const char*
Data(const Data&,const char*);
Data();
Data(const Data&);//dla linijki 35
~Data();
void first_data(char* data);
std::string first() const;
const char* second()const;//to sie przyda
std::string second(std::string data) const;
//const char* full_data(const std::string data);
void full_data(const std::string data);
const char* full_data();
Data to_upper(void) const;//const dodajesz tutaj zawsze jak nie zmieniasz obiektu zeby metoda dzialala na const obiekcie
Data to_lower(void) const;
friend std::ostream & operator <<(std::ostream & wypisz, const Data& data);
private:
const char* _text1;
const char* _text2;
};
inline std::ostream & operator <<(std::ostream & wypisz, const Data& data)
{return (wypisz<<"[\"" << data._text1 << " \", \" " << data._text2 << "\" ]");}
}
#endif
.cpp 中的函数
#include <iostream>
#include "lab07.h"
#include <string>
//konstruktor*******************************************************************************************************
oop::Data::Data(const char* c)
{_text1=c;}
oop::Data::Data(const Data& object, const char* c)
{
_text1 = object._text1;
_text2 = c;
}
oop::Data::Data(){} //tu chyba nic nie jest potrzebne
oop::Data::Data(const Data& object)
{
_text1 = object._text1;
_text2 = object._text2;
}
oop::Data::~Data(){} //tu chyba nic nie jest potrzebne
//funkcje*******************************************************************************************************
void oop::Data::first_data(char* data){}
std::string oop::Data::first()const
{return std::string(" ");}
std::string oop::Data::second(std::string data)const
{return std::string(" ");}
/* const char* oop::Data::full_data(const std::string data)
{return " ";}*/
void oop::Data::full_data(const std::string data)
{
int size = data.size();
int space = data.find(' ');
//_text1 = data.substr(0,space);
// _text2 = data.substr(space,size);
return ;}
const char* oop::Data::full_data()
{return " ";}
oop::Data oop::Data::to_upper(void)const
{return *this;}
oop::Data oop::Data::to_lower(void)const
{return *this;}
const char* oop::Data::second()const
{return " ";}
【问题讨论】:
-
请把表扬改成英文好吗?
-
它给出了什么输出,你期望什么?
-
@b4hand my psychic power predict: /* 输出:a = ["Pierwszy", "Drugi"] b = ["Tekst testowy", "Tekst testowy"] c = Test-first, Test -second d = ["PIERWSZY", "DRUGI"] e = ["pierwszy", "drugi"] */
-
在您开始怀疑构造函数或拆分字符串之前,您应该担心您的 funkcje 完全没有实现。 (您真的对什么都不做或返回
" "会产生错误的结果感到惊讶吗?)在开始将字符串分成更多字符串之前,让其余的代码正常工作。另外,如果您被允许std::string,请始终如一地这样做。
标签: c++ string constructor