Как string преобразуется в bool? - страница 2

 
Не согласен. Строка - это, по сути, встроенный класс. И он должен подчиняться общим законам приведения типов, а не выдавать отсебятину. Вот такой код не компилируется

Язык должен подчиняться документации. В С++ никто не ждёт, что подобная конструкция вытянет true или false из файла, а это лишь проверка на наличие ошибок. И ничего, никто не мучается:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    ifstream f("file"); // открываем файла
    if(f)
        cout << "file has been opened" << endl;
}
 
Alexey Volchanskiy:

Проверил, и правда выдает алерт! А вот так не выдает, очередной бред языка (((

это нормально при инициализации нужно задавать значение. тогда алерта не будет

из справки

Любая переменная при определении может быть инициализирована. Если не произведена явная инициализация переменной, то значение, хранящееся в данной переменной, может быть каким угодно.


 
Alexandr Bryzgalov:

это нормально при инициализации нужно задавать значение. тогда алерта не будет

из справки

Любая переменная при определении может быть инициализирована. Если не произведена явная инициализация переменной, то значение, хранящееся в данной переменной, может быть каким угодно.

Это из какой справки? Вродь была неявная инициализация нулём. Когда опять сломали?
 
Artyom Trishkin:
Это из какой справки? Вродь была неявная инициализация нулём. Когда опять сломали?
из mq4 Основы/Переменные/Инициализация переменных
 
Alexandr Bryzgalov:

это нормально при инициализации нужно задавать значение. тогда алерта не будет

из справки

Совершенно верно. Но для нативных переменных. Любой класс при создании должен обнулять свои поля.
 
Artyom Trishkin:
Это из какой справки? Вродь была неявная инициализация нулём. Когда опять сломали?

Это для глобальных. С локальными другой случай.

https://www.mql5.com/ru/docs/basis/variables/initialization 

Документация по MQL5: Основы языка / Переменные / Инициализация переменных
Документация по MQL5: Основы языка / Переменные / Инициализация переменных
  • www.mql5.com
Основы языка / Переменные / Инициализация переменных - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
pavlick_:

Язык должен подчиняться документации. В С++ никто не ждёт, что подобная конструкция вытянет true или false из файла, а это лишь проверка на наличие ошибок. И ничего, никто не мучается:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    ifstream f("file"); // открываем файла
    if(f)
        cout << "file has been opened" << endl;
}

Чего-о-о??? Из какого файла вытянет true/false? Вы хоть код попробуйте свой выполнить, cout не вызывается

ifstream f("c:\Forex\Real\FreshForex\passw.txt"); // открываем файла
if (f) // всегда false
   cout << "file has been opened" << endl;
int n = 100;
cout << n << endl;

 ****

 
Alexey Volchanskiy:

Чего-о-о??? Из какого файла вытянет true/false? Вы хоть код попробуйте свой выполнить, cout не вызывается

ifstream f("c:\Forex\Real\FreshForex\passw.txt"); // открываем файла
if (f) // всегда false
   cout << "file has been opened" << endl;
int n = 100;
cout << n << endl;

 ****

Разжевывать нет желания, успехов.
 
Alexey Volchanskiy:

Чего-о-о??? Из какого файла вытянет true/false? Вы хоть код попробуйте свой выполнить, cout не вызывается

ifstream f("c:\Forex\Real\FreshForex\passw.txt"); // открываем файла
if (f) // всегда false
   cout << "file has been opened" << endl;
int n = 100;
cout << n << endl;

 ****

Подскажите плиз,как замутить чтобы в строку передалось true

string MAS_SIG[1][6]=string(true); 
bool invert_p_rsi=int(MAS_SIG[s_s][6]); 

Print(invert_p_rsi);// Принтит true

string str[4]="Period RSI invert:"+IntegerToString(invert_p_rsi);//стрингует НОЛЬ
 

На мой взгляд, подобное обращение с типами - это очень нехороший стиль программирования.

Вобще, с преобразованием типов надо быть очень осторожным - типы придуманы для того, чтобы возложить на компилятор задачи по контролю допустимых значений перменных. В строку не может прямо передаваться булевое значение true. А если необходимо, чтобы был передан текст "true" - то это надо сделать явно.