может так:
StringAdd(s2, (string)ch);
может так:
Не-а, добавляет IntToStr(ch)
Если есть string, то должен быть char и не иначе как дефолтнодвухбайтовый
Забирать символ в виде строки можно функцией StringSubstr
Спасибо
Не дороговато ли по производительности работать с integer'ом через динамические string'и ?
Особенно в контексте многотысячных итераций?
Может стоит сделать StringAdd(string &s, int w_char) ?
Спасибо
Не дороговато ли по производительности работать с integer'ом через динамические string'и ?
Особенно в контексте многотысячных итераций?
Может стоит сделать StringAdd(string &s, int w_char) ?
Если я правильно понял, то надобно из цифр составить некое число.
Подобное реализовал в "генераторе магиков"
Мож сгодится... (для мт4)
int MagCreat(int a, int p, int t) { string mag, as, ps, ts; // if(a<0||a>99) {Print("Ошибка магика. Значение A: "+a+", не должно превышать 99 и быть меньше 0."); a=0;} if(a>=0&&a<10) as="0"+a; // if(p<0||p>99) {Print("Ошибка магика. Значение P: "+p+", не должно превышать 99 и быть меньше 0."); p=0;} if(p>=0&&p<10) ps="0"+p; // if(p<0||p>6) {Print("Ошибка магика. Значение T: "+t+", не должно превышать 5 и быть меньше 0."); t=0;} ts=t; // mag="8"+as+StringSubstr(WindowExpertName(),2,3)+ps+ts; // return(StrToInteger(mag)); } //выдано 9 разрядов, начинающееся с 8 например 8 48 364 99 1
основной смысл "складывания" в том, что вначале инт перводится в стринг, а уже стринги и складываются,
результирующий текст строки при необходимости переводится в инт.
Есть такая функция StringSetCharacter, при помощи которой можно добавлять символ к концу строки.
Похоже, приемлемое решение найдено:
int L=StringLen(s1); for (int i=0; i<L; i++) { int ch=StringGetCharacter(s1,i); if (ch=='(' || ch==')' || ch==',') { StringSetCharacter(s2,StringLen(s2),ch); } }
Обращаю внимание на одинарные кавычки в условии if (...) - на двойные компилятор выдает Warning implicit conversion from 'number' to 'string'
В документации по поводу одинарных и двойных кавычек ничего не нашел.
Проверил: "A" != 'A'
Немного некрасиво, что "парные" по смыслу функции Get и Set оперируют разными типами: short (2 байта) и int (4 байта). Подсознательно ожидаешь ushort в обоих случаях.
bool StringSetCharacter( string& string_var, // строка int pos, // позиция short character // символ );
int StringGetCharacter( string string_value, // строка int pos // позиция символа в строке );
Задачу считаю решенной - код должен быть более эффективным, чем работа через промежуточный string
Спасибо всем откликнувшимся !
Проверил: "A" != 'A'
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Перебираю строку посимвольно
StringAdd требует в качестве второго параметра тип string
Что делать?
Через дополнительный string и SetStringCharacter как-то совсем некачественно и ресурсоемко получается