Последние сообщения

Страницы: 1 [2] 3 4 ... 10
11
Общий раздел / Re: Вопросы по С/С++
« Последний ответ от Jordan Октябрь 28, 2017, 02:01:42 pm »
Разобрался.

Компилятор не на second ругался а на return с текстом, переделал.

const string & msg::str(const string & val)
{
  map<string, string>::iterator i = m_data.find(val);

  if (i == m_data.end())
  {
    m_buffer = "Error: Not foint string in " + val;
   
    return m_buffer;
  }
  else
  {
    return i->second;
  }
}
12
Общий раздел / Вопросы по С/С++
« Последний ответ от Jordan Октябрь 28, 2017, 01:43:42 pm »
Написал код для разбора файла формата:
{номер}{строка}

Пример

{100}{Hello!}

Код на С++

#ifndef _MSG_HPP
#define _MSG_HPP
/*******************************************************************************

*******************************************************************************/
class msg
{
public:
  msg(const string & name);
  ~msg();
  char read_char();
  bool read();
  const string & get();
  const string & str(const string & val);

private:
  size_t   m_line;
  size_t   m_tabs;
  string   m_buffer;
  ifstream m_input;
  map<string, string> m_data;
};
/*******************************************************************************

*******************************************************************************/
msg::msg(const string & name)
{
  m_input.open(name.c_str());
 
  m_line = 1;
  m_tabs = 0;
 
  while(read())
  {
    string f = get();
    read();
    string s = get();
    m_data.insert(pair<string, string>(f,s));
  }
 
  for (map<string,string>::iterator i = m_data.begin(); i != m_data.end(); ++i)
  {
    cout << i->first + " = " + i->second  << endl;
  }
}
/*******************************************************************************

*******************************************************************************/
msg::~msg()
{
  m_input.close();
}
/*******************************************************************************

*******************************************************************************/
char msg::read_char()
{
  char ch = m_input.get();
 
  m_tabs++;
 
  if (ch == '\n')
  {
    m_line++;
    m_tabs = 0;
  }
 
  return ch;
}
/*******************************************************************************

*******************************************************************************/
bool msg::read()
{
  m_buffer.clear();
 
  char ch = read_char();

  while ((ch == ' ') || (ch == '\n'))
  {
    ch = read_char();
  }

  if (ch == '{')
  {
    ch = read_char();

    while (ch != '}')
    {
      if (ch != '\n')
      {
        m_buffer.push_back(ch);
      }
      ch = read_char();
    }
  }
 
  if (ch == EOF)
  {
    return false;
  }
 
  return true;
}
/*******************************************************************************

*******************************************************************************/
const string & msg::get()
{
  return m_buffer;
}
/*******************************************************************************

*******************************************************************************/
const string & msg::str(const string & val)
{
  map<string, string>::iterator i = m_data.find(val);

  if (i == m_data.end())
  {
    return "Error: Not found string in " + val;
  }
  else
  {
    return i->second;
  }
}
/*******************************************************************************

*******************************************************************************/
#endif

Проблема в этой функции

const string & msg::str(const string & val)
{
  map<string, string>::iterator i = m_data.find(val);

  if (i == m_data.end())
  {
    return "Error: Not found string in " + val;
  }
  else
  {
    return i->second;
  }
}

Как вернуть second?
13
Урочище Флуда / Re: Что почитать
« Последний ответ от Peter Almazov Июль 23, 2017, 02:43:53 pm »
Альфи Кон - Наказание наградой. Что не так со школьными оценками, системами мотивации, похвалой и прочими взятками.

Recommended, однозначно.
https://yadi.sk/d/A3fDmoJk3LK8Nx



14
Общий раздел / Re: Расширенный тест на производительность.
« Последний ответ от kkkk Май 16, 2017, 09:38:10 am »
Какие выводы? Умение писать алгоритмы позволяет писать более эффективные решения, чем умение пользоваться стандартными библиотеками. В некоторых случаях сложность использования библиотек может быть на уровне или превышать сложность написания алгоритмов.
15
Общий раздел / Re: Расширенный тест на производительность.
« Последний ответ от Geniepro Май 12, 2017, 06:51:44 am »
Полгода прошло, какие выводы-то?
Сам я так и не осилил решение на Расте. Вроде на нём можно сделать вполне шустрый код, но выглядит он как говно, смотреть страшно, аж глаза кровоточат...
16
Общий раздел / Re: OberonJS
« Последний ответ от Ivan Denisov Март 21, 2017, 05:50:36 am »
https://models.molpit.org/model/49

У тебя глобальный String перекрывается твоей собственной функцией String. Обратиться к глобальному можно так: JS.String.fromCharCode
Спасибо! Поправил. Буду бдителен на этот счет впредь.
17
Общий раздел / Re: OberonJS
« Последний ответ от vlad Март 20, 2017, 01:22:39 pm »
https://models.molpit.org/model/49

У тебя глобальный String перекрывается твоей собственной функцией String. Обратиться к глобальному можно так: JS.String.fromCharCode
18
Общий раздел / Re: OberonJS
« Последний ответ от Ivan Denisov Март 20, 2017, 10:43:51 am »
Приведи весь сгенеренный код или минимальный пример, где оно не работает.
Вот погляди.
https://models.molpit.org/model/49
19
Общий раздел / Re: OberonJS
« Последний ответ от vlad Март 20, 2017, 03:12:30 am »
Еще прошу поделиться опытом, как быть с динамическими объектами. Скажем, если мне надо создать массив под данные из файла.
NEW нельзя получается, массивы объявить тоже только по константе возможно.
Только статические типы получается? То есть заранее делать огномный буфер под предполагаемый размер?
Или есть какие-то варианты?

1. Eberon (я там сделал поддержку динамических массивов).
2. Системный модуль JS: Вызвать RTL$.makeArray c нужным размером.

Вообще если ты собрался что-то читать из файла, то тебе все равно без JS не обойтись. Там же в биндинге сделай и массив нужного размера.

По подводу "как с этим жить" тебе Info21 расскажет на oberoncore  8) По мне так никакого глубинного смысла в этом нет вообще - Вирт сэкономил в очередной раз на простоте компилятора при том, что динамические массивы ему все равно не нужны были для очередной задачи.
20
Общий раздел / Re: OberonJS
« Последний ответ от vlad Март 20, 2017, 03:04:16 am »
Firefox почему-то ругается
String.fromCharCode is not a function

Должно быть. Вот мозилловская документация: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

Приведи весь сгенеренный код или минимальный пример, где оно не работает.
Страницы: 1 [2] 3 4 ... 10