С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/56: Рейтинг темы: голосов - 56, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11

замена точки на запятую?

14.08.2009, 12:24. Показов 10681. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот написал такой код для считывания файла ы потом вывода по нем графика. но проблема в том, что числа в файле записаны с использованием "," а нужна точка для Chart . В билдере есть функцыя - replace(v.begin(), v.end(),".", ",");
только как ней пользоватся не пойму никак . помогите плиз, где надо ейо вставить и с какими параметрами. вот сам код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Button1Click(TObject *Sender)
{
vector<struct1> v;
String path = ExtractFilePath(Application->ExeName) + "\\Phase_A.txt";
 
ifstream fi(path.c_str());
 
struct1 s1;
while(!fi.eof())
{
    fi>>s1.ind>>s1.god>>s1.x;
    v.push_back(s1);
}
fi.close();
 
for (int i=0; i<v.size()-1; i++)
{
Series1->AddXY(v[i].ind,v[i].x,"" ,clRed);
Series2->AddXY(v[i].ind,v[i].god,"" ,clLime);
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2009, 12:24
Ответы с готовыми решениями:

Калькулятор из одного действия - замена точки на запятую
Люди кто знает как в этом примере разобраться? void __fastcall TForm2::LabeledEdit1Change(TObject *Sender) { double a; if...

В QInputDialog выводит запятую вместо точки для getDouble
Здравствуйте. Подскажите пожалуйста - использую для ввода десятичного числа, почему-то по умолчанию выводит вместо точки запятую, хотя в...

Замена одной точки в строке на три точки
Нужно в строке заменить одну точку на три точки Но я умею только один символ на другой вот мой пример #include &lt;iostream.h&gt;...

7
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
14.08.2009, 12:38
ну ставить надо после 11 строки если я конечно не ошибаюсь

Добавлено через 6 минут 51 секунду
string REPLACE( str string, from_str string, to_str string)

Возвращает строку str, заменив в ней все подстроки from_str на to_str. Поддерживает многобайтовые символы.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
14.08.2009, 12:41
ysfox, а зачем реплейсить в билдере, если можно просто входной файл сделать правильным? это кроме всего, ускорит выполнение программы.
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
14.08.2009, 12:52  [ТС]
я б ничево не менял, но в файл я значения записіваю как
C++
1
FloatToStrF(PhaseVar_A.Fi, ffFixed, 5, 3)
чтоб в файл числа например PhaseVar_A.Fi=1234.111122343252 записались только с 3 знаками после комы... а ета функцыя ставит в файле вместо "." - ","

а потом когда считываю записаные файлы надо снова менять запятую на точку
вот зачем


мож чтото делаю не так, я новичок в использование билдера
0
 Аватар для snake32
3504 / 1687 / 236
Регистрация: 26.02.2009
Сообщений: 8,409
Записей в блоге: 6
14.08.2009, 12:53
ysfox, Как я понял, структура struct1 состоит из трёх чисел с плавающей запятой => ошибка возникает при загрузки из потока в структуру: fi>>s1.ind>>s1.god>>s1.x;, Так что replace(v.begin(), v.end(),".", ",");, по крайней мере без перегрузки операторов не прокатит.
Чем разделяются данные в текстовом файле? Пробелом?
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
14.08.2009, 13:04  [ТС]
да структура 3 даных тип - дабл

даные розделяются символом табуляцыи
вот код функцыи записи в файл:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Sapus_w_Fail(void)
{
        GetSystemTime(&st);
        AnsiString tofile;
        char string1[100];
        int leng;
 
        tofile  = FloatToStrF(PhaseVar_A.Fi, ffFixed, 5, 3) + "\t" +FloatToStrF(PhaseVar_A.U, ffFixed, 5, 3) + "\t" + FloatToStrF(PhaseVar_A.I, ffFixed, 5, 3);
        tofile += "\n";
        strcpy(string1, tofile.c_str());
        leng = strlen(string1);
        TFileStream*f1 = new TFileStream("Phase_A.txt",fmOpenWrite);
        f1->Seek (0, 2);
        f1->Write(string1,leng);
        delete f1;
}

можно и попроще но я не знаю ф-цыи которая б мне помогла уменьшыть число розрядов кроме как FloatToStrF(PhaseVar_A.I, ffFixed, 5, 3), для записи их в файл.


ооооо есть идея, может сдесь перед записю в файл, в строке string1 менять значения "," на "." ?
но кк ето организовать?
0
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
14.08.2009, 13:16
попробуйте просто перед вызовом функции FloatToStrF сделать
C++
1
DecimalSeparator = '.';
2
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
14.08.2009, 13:22  [ТС]
Цитата Сообщение от mamedovvms Посмотреть сообщение
ну ставить надо после 11 строки если я конечно не ошибаюсь

Добавлено через 6 минут 51 секунду
string REPLACE( str string, from_str string, to_str string)

Возвращает строку str, заменив в ней все подстроки from_str на to_str. Поддерживает многобайтовые символы.
чтото не нахожу такой функцыи как string REPLACE( str string, from_str string, to_str string)...
а она б какраз подошла

Добавлено через 3 минуты 44 секунды
ух... спасибо всем DecimalSeparator = '.'; заменил все как надо.

Правду говорят - все гениальное просто

Спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2009, 13:22
Помогаю со студенческими работами здесь

В текстовом файле заменить точку на запятую, а запятую на многоточие
Доброго времени суток! есть задание: в текстовом файле заменить точку на запятую, а запятую на ...(три точки) как открыть файл знаю, а вот...

Замена точки на запятую
Как в строке заменить все символы точки на запятую (если таковые имеются)?var CurrentVersion : string; ... CurrentVersion := '6.1';

Замена точки на запятую в столбце
записывался макрос, который во всём столбце заменяет точку на запятую: Columns(&quot;J:J&quot;).Select Selection.Replace...

Замена символов точки на запятую
Здравствуйте всем! Суть: меняю точку на запятую, при этом макрорекодером пишется код. Замена происходи удачно. После, использую...

Замена точки на запятую в TextBox
Как заменить в, допустим, текстбоксе запись 0.4 на 0,4, то есть заменить точку на запятую?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru