Другие языки программирования и технологии

C++. Никогда не выполняется условие (stroka.SubString(i,1)==" ") почему-то.

Хочу удалить пробелы из строки: "340 000", чтобы можно было перевести в число. cellValue = FormatFloat("#,###",cellValue.ToInt(); //получаю значение с пробелом //терь перевожу обратно в int for (int i = 0; i < cellValue.Length();) { if (cellValue.SubString(i,1)==" ") cellValue.Delete(i,1); else i++; } //cellValue по-прежнему содержит пробел-разделитель разрядов. Пошаговая отладка показала, что строка cellValue.delete не была выполнена никогда.
у тебя алгоритм слишком запутанный. Вот я пишу пример на C#:

string source = "7 340 009";

int rez = 0;
int z = 1;
for (int i = source.Length - 1; i >= 0; i--)
{
char ch = source[ i ];
if (ch >= '0' && ch <= '9')
{
rez += (ch - '0') * z;
z *= 10;
}
}

// имеем rez = 7340009
Наглый 3Асранец
Наглый 3Асранец
10 716
Лучший ответ
Не знаю, что это за язык, только никаких SubString я не знаю.
Надо думать, в вашем случае SubString и " " - разных типов, надо делать приведение типов.
Саша Князьков
Саша Князьков
54 366
При удалении символов из строк предпочтительнее использовать циклы While...
NZ
Nariman Zhumagazin
23 519
циклы while предпочтительнее? не смешите пожалуйста. а лучше не пишите вовсе если не знаете ответ на вопрос. пишите по теме.

Вам, возможно, следует воспользоваться оператором S превращающим вашу строковую константу " " в объект типа String который вы используете в левой части вашего условного выражения.

Но проще воспользоваться методом Compare объекта String, это позволит вашему коду миновать использование перегруженного оператора равенства для объекта String который в конечном итоге вызывает внутри себя все тот же метод Compare.

http://msdn.microsoft.com/en-us/library/system.string.compare(VS.71).aspx

Этот вопрос имеет к С++ лишь косвенное отношение на самом деле, речь идет, если я правильно понимаю об использовании String класса из .NET фреймворка.
Nagdali Huseynov
Nagdali Huseynov
485