Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строка - Перегрузка оператора << [C++] 
:(
    Опции темы
ArniLand
Дата 28.4.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



azesmcar, сделал. Теперь выдает такое


Цитата

d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(21) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(28) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(39) : error C2664: 'strlen' : cannot convert parameter 1 from 'std::string' to 'const char *'
        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called


Код программы:
/
Код

/Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(char* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(char* pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = strlen(MyRow);//жалуется на эту строку
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < strlen(MyRow); ++i)//жалуется на эту строку
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= strlen(MyRow); i+=3)//жалуется на эту строку
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    char L[40] = ("abdcezztyyuazyytztasaz");
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}











Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:13
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
да...менять..
а вы не могли бы посмотреть мою тему в общих вопросах?
не хочу навязываться, просто хочется сдвинуться в деле.. а никто не отвечает, если бред сделал так и напишите=)

Добавлено через 58 секунд
ArniLand 
аналог strlen у string это .size()
Код

MyRow.size()

PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



подправил так, но выдает такое:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\laba 2.3 masha.cpp(12) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::string *' (or there is no acceptable conversion)
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(19) : error C2075: 'L' : array initialization needs curly braces

Код программы:
Код

//Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(string* pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(string* pMyRow)
{
    MyRow = pMyRow;//жалуется на эту строку
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = MyRow.size();
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= MyRow.size(); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    string L[40] = ("abdcezztyyuazyytztasaz");//жалуется на эту строку
    Row *obj = new Row(L);
    cout << obj;
    return 0;
}










Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:22
PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ArniLand @  28.4.2010,  21:21 Найти цитируемый пост)
 Row(string* pMyRow);


Цитата(ArniLand @  28.4.2010,  21:21 Найти цитируемый пост)
Row::Row(string* pMyRow)

замени string* на const string&
PM   Вверх
toxx
Дата 28.4.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand 
Код

Row::Row(string pMyRow)
{
    MyRow = pMyRow;//жалуется на эту строку
}


Код

string L("abdcezztyyuazyytztasaz");//жалуется на эту строку

azesmcar
так и забыл ... про const
Код

Row::Row(const string& pMyRow)


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:31
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



заменил. Теперь такое выдает:
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(19) : error C2075: 'L' : array initialization needs curly braces
d:\мои документы\visual studio 2008\projects\laba 2.3 masha\laba 2.3 masha\main.cpp(20) : error C2664: 'Row::Row(const std::string &)' : cannot convert parameter 1 from 'std::string [40]' to 'const std::string &

Код

//Row.h
#pragma once
#include<iostream>
using namespace std;
#include <string>
class Row
{
private:
    string MyRow;
public:
    Row(const string& pMyRow);
    ~Row();
    int LengthofRow();
    int CountofSymbols();
    int Change();
    friend ostream &operator<<(ostream &stream, Row &obj);
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>


using namespace std;

Row::Row(const string& pMyRow)
{
    MyRow = pMyRow;
}

Row::~Row()
{}

int Row::LengthofRow()
{
    int Length;
    Length = MyRow.size();
    return Length;
}

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}

int Row::Change()
{
    for(int i = 2; i <= MyRow.size(); i+=3)
    MyRow.insert(i,"=");
    cout<<"\nRow = "<< MyRow;
    return 0;
}

//main,cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Row.h"
#include <string.h>

using namespace std;

ostream &operator<<(ostream &stream, Row &obj)
{
    stream <<"Dlina stroki :" << obj.LengthofRow() << "\n";
    stream <<"Kolichestvo 'z' :" << obj.CountofSymbols() << "\n";
    stream <<"Zamena :" << obj.Change() << "\n";
    return stream;
}

int main()
{
    string L[40] = ("abdcezztyyuazyytztasaz");//жалуется на эту строку
    Row *obj = new Row(L);//жалуется на эту строку
    cout << obj;
    return 0;
}










Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:28
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
уберите вы уже ваши[40] нет такого у стринг...
Код

string L("abdcezztyyuazyytztasaz");


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:31
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, подправил так. Программа работает, но выдает не правильно выдает результат. Какие то странные цифры.
user posted image
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
замените
Код

Row *obj = new Row(L);//жалуется на эту строку

на
Код

Row obj(L);


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:46
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, исправил.
Теперь не совсем правильно выдает результат, не выдает количество символов 'z'
user posted image

Это сообщение отредактировал(а) ArniLand - 28.4.2010, 21:49
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



мдэ, так вы его и не возвращаете даже.. smile 
Код

int Row::CountofSymbols()
{
    int sum = 0;
    for (int i = 0; i < MyRow.size(); ++i)
    {
        if (MyRow[i]=='z')
            sum++;
    }
    cout<< MyRow;
    return 0;
}


Это сообщение отредактировал(а) toxx - 28.4.2010, 21:51
PM MAIL   Вверх
ArniLand
Дата 28.4.2010, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, подскажите пожалуйста как правильно будет?
PM MAIL   Вверх
toxx
Дата 28.4.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Странно вы как-то классы изучаете, если возвратить значение функции не можете =(
Код

return sum;


PM MAIL   Вверх
azesmcar
Дата 28.4.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



ArniLand, 

может сразу обратиться в центр помощи? все равно сам ничего не делаешь smile 
какова твоя цель? научиться или сдать домашнее задание?

Это сообщение отредактировал(а) azesmcar - 28.4.2010, 21:59
PM   Вверх
toxx
Дата 28.4.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



azesmcar
Не научиться точно=) но думаю имя(Маша) в заголовке скрина проясняет ситуацию =)
Я понимаю конечно, что своими подсказками я волей не волей сделал эту лабу... но что ж поделаешь =)
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.