Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сложности с присваиванием

70K
10 февраля 2012 года
zigler
15 / / 17.12.2011
Доброго времени суток!

Подскажите, как решить проблему с присваиванием значения std::string в int.


Код:
// testsss.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <string>
#include <fstream>
#include <iostream>

using namespace std;

std::string ***LNodeType_DO_attr;

class CDA_Quality {
    public:
        std::string validity;
        std::string overflow;
        int timeout;
        CDA_Quality();
};
CDA_Quality::CDA_Quality(){}

class CDC_INC {
    public:
        CDA_Quality q;
        CDC_INC();
};
CDC_INC::CDC_INC(){}

class LN_ZBAT {
    public:
        CDC_INC EEHealth; //External equipment health
        LN_ZBAT();
};
LN_ZBAT::LN_ZBAT(){}


int main(int argc, char* argv[])
{
    int h,k,p;
    LNodeType_DO_attr = new std::string **[5];
    for(h=0;h<5;h++)
    {
        LNodeType_DO_attr[h] = new std::string *[5];
        for(k=0;k<5;k++)
        {
            LNodeType_DO_attr[h][k] = new std::string [5];
            for(p=0;p<5;p++)
            LNodeType_DO_attr[h][k]="";//test
        }
    }

    LN_ZBAT battery1;
    LNodeType_DO_attr[1][3][2] = "kkkkk";
    std::string ppp;ppp = "dddd";

    battery1.EEHealth.q.validity = ppp;
    battery1.EEHealth.q.overflow = LNodeType_DO_attr[1][3][2];
    battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2];

    cout << battery1.EEHealth.q.validity << endl;
    cout << battery1.EEHealth.q.overflow << endl;
    cout << battery1.EEHealth.q.timeout << endl;
    return 0;
}



Выдает ошибку

Compiling...
testsss.cpp
E:\files=study\kurs V\Deutschland\Forschungsprojekt\cpptest\testsss\testsss.cpp(60) : error C2440: 'type cast' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'int'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.

testsss.exe - 1 error(s), 0 warning(s)
1
10 февраля 2012 года
kot_
7.3K / / 20.01.2000
может лучше исправить ошибку, чем думать как присвоить строку числу? внимательней надо быть
10K
10 февраля 2012 года
Cybernetic
106 / / 22.07.2009
Цитата: zigler
Подскажите, как решить проблему с присваиванием значения std::string в int.



Не помню, чтобы в плюсах было приведение типа std::string к int.
Команда atoi, пришла из чистого С, слышали?
Это самый деревенский способ.

70K
10 февраля 2012 года
zigler
15 / / 17.12.2011
спасибо, все разрешилось.

Вместо
battery1.EEHealth.q.timeout = (int)LNodeType_DO_attr[1][3][2];

нужно использовать
battery1.EEHealth.q.timeout = atoi( ( LNodeType_DO_attr[1][3][2] ).c_str() );
430
10 февраля 2012 года
craftyfox
157 / / 20.02.2000
а что должно быть в timeout и как сие соотносится с LNodeType_DO_attr[1][3][2]?
79K
10 февраля 2012 года
justgm
5 / / 15.01.2012
Мне больше интересно зачем ты создаешь несколько классов, хотя по сути используется только один....
70K
11 февраля 2012 года
zigler
15 / / 17.12.2011
Цитата: craftyfox
а что должно быть в timeout и как сие соотносится с LNodeType_DO_attr[1][3][2]?



В элементах массива хранится в 95% случаев строка, но иногда попадается число.
LNodeType_DO_attr - матрица аттрибутов для стандарта IEC61850
battery1 - объект класса со всеми вытекающими подклассами, тут должны храниться аттрибуты для стандарта IEC61970
Короче говоря, это программа взаимосвязи между двумя разными стандартами Smart Grid.

70K
11 февраля 2012 года
zigler
15 / / 17.12.2011
Цитата: justgm
Мне больше интересно зачем ты создаешь несколько классов, хотя по сути используется только один....



на самом деле классов намного больше и почти все они используются
этот примерчик был только для наглядности

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог