Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > в String найти нужный символ и заменть


Автор: КУБ 22.6.2006, 15:11
Вобщем мне нежно наприме в строке 
Код

String str;

найти сммвол "," и заменть его на "."
Друзья подскжите как это сделать?  smile

Добавлено @ 15:11 
Вобщем нужно нати запятую и заменить её на точку  smile  

Автор: _hunter 22.6.2006, 16:13
это что за класс такой? в любом случае ищи методы типа Pos/Find/Replace 

Автор: КУБ 22.6.2006, 16:27
Это класс String из библиотеки VCL  smile

Добавлено @ 16:27 
так в книжке написано

Добавлено @ 16:34 
_hunter  я нашёл запятую так 
Код

Buf.Pos(",");


А заменить на точку  "." какой командой надо?  smile  

Автор: Rockie 22.6.2006, 16:43
а вроде массив он и в Африке массив. грубой силой =)
Код
#include<conio>
#include<iostream>
#include<string>

using namespace std;

void main(){
string str = "Hi Vasya. Pupkin..";

int lenght = str.length();
for(int i=0;i<lenght;i++)
 if(str[i]=='.') str[i]=',';

cout<<str;

getch();
}
 

Автор: КУБ 22.6.2006, 16:45
Я там неправильно написал. надо не Buf а 
Код

str.Pos(","); 



И какой комнндой заменить запятую на точку?  smile  

Автор: MAKCim 22.6.2006, 16:52
Код

string str;
...
    string::iterator i;
    if ((i=find(str.begin(),str.end(),','))!=str.end())
        *i='.';
...
 

Автор: КУБ 22.6.2006, 17:27
Получилось всё . Спасибо друзья   smile  

Автор: _hunter 22.6.2006, 17:35
в VCL AnsiString.
+ чего сюда постил?
++ там езе метод Replace есть... 

Автор: Rockie 22.6.2006, 18:12
Код
#include<conio>
#include<iostream>
#include<string>

using namespace std;

void main(){
string str = "text. text..";

replace(str.begin(),str.end(), '.' , ',');

cout<<str;

getch();
}
 

Автор: КУБ 22.6.2006, 18:52
Цитата(_hunter @  22.6.2006,  17:35 Найти цитируемый пост)
++ там езе метод Replace есть...  


Нет метода  Replace!!

Добавлено @ 18:54 
Может както подругому  в VCL AnsiString называется такойже метод.  

Автор: Rockie 22.6.2006, 18:55
Цитата(КУБ @  22.6.2006,  18:52 Найти цитируемый пост)
Нет метода  Replace!! 

а выше я пример чего привел? 

Автор: КУБ 22.6.2006, 18:58
Мне мешали запятые. И поэтому нужно было искать их и менять на точки. Эту проблему я решил так 

Код

DecimalSeparator='.';


И там где запятые были , всё поменялось на точки.

 И всё  smile 
 Если чесно я непойму как это работает. Но работает  smile

Добавлено @ 19:06 
Цитата(Rockie @  22.6.2006,  18:55 Найти цитируемый пост)
а выше я пример чего привел?  

Я зделал имено как ты написал. Я заменил VCL AnsiString т.е. String  и использовал просто string  и всё работает.  smile  Спасибо.

Но тут мне недавно подошёл товарищь и говарит вставь в начале программы
Код

DecimalSeparator='.';


Я вобще в шоке. Всё работает . ненадо отлавливать эти запятые и менять на точки вобще.
Немогу понять как оно работает  smile  но главное работает  

Автор: Алексей 22.6.2006, 19:43
Цитата

Я вобще в шоке. Всё работает .


Зачем же столько раз одно и тоже писать? smile

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

Автор: mr.Anderson 22.6.2006, 20:34
Могу привести свой пример... он, мож, немного надуман, но работает (для класса AnsiString):
Код

//Подразумевается, что есть объект TMemo с именем Temp
AnsiString find=",",
                 news=".";
int point_pos=1;

point_pos=Temp->Text.Pos(find);

Temp->Text = Temp->Text.Delete(point_pos, 1);
Temp->Text = Temp->Text.Insert(news, point_pos);
 

Автор: maalan 30.6.2006, 11:31
DecimalSeparator это, конечно, хорошо. он заменяет системный разделитель для конкретной программы. НО! у меня он, почему-то, иногда сбивается с точки на запятую и сразу лезут ошибки (что логично, все расчитано на точку) 

Автор: mr.Anderson 30.6.2006, 16:19
maalan, пробуйте другие методы. Тут же их описали. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)