Другие языки программирования и технологии
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
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
Не знаю, что это за язык, только никаких SubString я не знаю.
Надо думать, в вашем случае SubString и " " - разных типов, надо делать приведение типов.
Надо думать, в вашем случае SubString и " " - разных типов, надо делать приведение типов.
При удалении символов из строк предпочтительнее использовать циклы While...
циклы while предпочтительнее? не смешите пожалуйста. а лучше не пишите вовсе если не знаете ответ на вопрос. пишите по теме.
Вам, возможно, следует воспользоваться оператором S превращающим вашу строковую константу " " в объект типа String который вы используете в левой части вашего условного выражения.
Но проще воспользоваться методом Compare объекта String, это позволит вашему коду миновать использование перегруженного оператора равенства для объекта String который в конечном итоге вызывает внутри себя все тот же метод Compare.
http://msdn.microsoft.com/en-us/library/system.string.compare(VS.71).aspx
Этот вопрос имеет к С++ лишь косвенное отношение на самом деле, речь идет, если я правильно понимаю об использовании String класса из .NET фреймворка.
Вам, возможно, следует воспользоваться оператором S превращающим вашу строковую константу " " в объект типа String который вы используете в левой части вашего условного выражения.
Но проще воспользоваться методом Compare объекта String, это позволит вашему коду миновать использование перегруженного оператора равенства для объекта String который в конечном итоге вызывает внутри себя все тот же метод Compare.
http://msdn.microsoft.com/en-us/library/system.string.compare(VS.71).aspx
Этот вопрос имеет к С++ лишь косвенное отношение на самом деле, речь идет, если я правильно понимаю об использовании String класса из .NET фреймворка.
Похожие вопросы
- C++ как сделать двойное условия цикла?
- объясните как именно работает цикл (int i = 0; i < N; i++) в этом коде, почему нельзя написать i+1, вместо i++
- На компе 2 "hkcmd.exe" Один в C:\WINDOWS\system32, другой в C:\WINDOWS\OemDrv\G\14 Они оба нужны? И почему их 2?
- Excel В одной ячейке значение к примеру 20. Необходимо выполнить (1+2)^i+1 (i+1 должен продолжаться до 20 включ.)
- for(i=1,n,i++). Что делает этот цикл? Объясните по порядку..
- Этот знак вроде "сумма"... Но все равно не понимаю, что там делают "n" и "i=1"
- паскаль Ввести числовую матрицу {Aij}i=1,...n;j=1,...m. Найти произведение сумм элементов строк Помогите решить)
- Помогите пожалуйста! Что означает эта запись и что за операция это? For i:=1 to n do
- как сделать так чтобы два блока программы выполнялись одновременно в c++ ?
- Учу C++! Уже знаю: типы данных, циклы. условия, привидения и т. д учу 5дней. вот программа! Как норм за 5 дней?