Обсуждение Программирование на C/C++

Чет не понял как это работает.

А понял,
записывает заместо 4 символа в str, 5 символ из list->Strings[1], и что дальше?, ну выведет он мне всеравно 6 символов, а не 5.
результат: asdggh


И зачем str = list->Strings[1]; ? Чтобы память выделить? Не понятно (
из вашего примера я понял, что вам нужно вместо неугодного символа просто скопировать следующий за ним. Для ограничения строки используйте символ '\0'

Код:
      TStringList*list=new TStringList();
      AnsiString str;
      list->Add("qwerty");
      list->Add("asdfgh");
      list->Add("zxcvb");
for (int i=1; i<=list->Strings[1].Length();i++) {
     if(i != 5 ) str[i] =  (list->Strings[1])[i];
}
      list->Strings[1] = str;
      Label1->Caption = list->Strings[1];

Так чтоле?

неет не так( переполнение памяти вылетает(
str - строка нулевой длины. вы пытаетесь обратиться к i-тому ее члену и получаете ошибку. все верно :)
Так же необходимо перебирать символы до i<list->Strings[1].Length(); иначе будет ошибка.
Так же по вашему коду следует что при i =5 вы оставляете случайно записанный в памяти символ.
 
Нужно перевести путь в короткий. Делаю так:

Код:
#include <winbase.h>
#include <windows.h>
#include <cstring>
char* Str1 //Аргумент запуска приложения, так что там все ок. 
char* Str2 = new char[strlen(Str1)];
Str2[0] = '\0';
GetShortPathName(Str1, Str2, strlen(Str1));
После этого строка Str2 остается пустой. Что я делаю не так?
NetBeans, MinGW.
 

JIECHuK

Ословед
ну так ты в первый (нулевой) символ Str2 пихаешь конец строки \0 конечно она пустая считается...
 
Так он ее потом в функцию передает.
Just Talk, покажи прототип функции GetShortPathName
 
есть ли в C++:
1) функция, возвращающая символ по его коду (в паскале - Chr),
2) Функция, возвращающая кодсимвола по символу(в паскале - Ord)?
 

walrus

Ословед
есть ли в C++:
1) функция, возвращающая символ по его коду (в паскале - Chr),
2) Функция, возвращающая кодсимвола по символу(в паскале - Ord)?
Нет, есть просто char, который можно вывести как символ или использовать со string, но это уже смотреть в хелпе string'а.
 
есть ли в C++:
1) функция, возвращающая символ по его коду (в паскале - Chr),
2) Функция, возвращающая кодсимвола по символу(в паскале - Ord)?
Часто int и char имеют одинаковый размер, то есть их можно приравнять. Например int a = 117; char b = a; std::cout<<b; даст значение 'u'. По-моему, размеры их одинаковы не всегда и не везде, так что если не прокатит - смотреть sizeof() типа.

Фокус не прокатит с wchar_t, он обычно больше int'a (чаще всего двухбайтовый).
 
Нужно перевести путь в короткий. Делаю так:

Код:
#include <winbase.h>
#include <windows.h>
#include <cstring>
char* Str1 //Аргумент запуска приложения, так что там все ок. 
char* Str2 = new char[strlen(Str1)];
Str2[0] = '\0';
GetShortPathName(Str1, Str2, strlen(Str1));
После этого строка Str2 остается пустой. Что я делаю не так?
NetBeans, MinGW.
Функции GetShortPathName() необходимо передавать только существующий путь, иначе она ничего не делает со строкой. Может быть в этом проблема. В Visual Studio код работает.
 

HumFF

Ословед
Подскажите пожалуйста функции вычисления длины числового массива. У меня пока так стоит. Как правильно сделать? Заранее, спасибо.
PHP:
int zad1_chislo(int F[])
{
int k = sizeof(F);

  cout<<"Chislo elementov, vhodyashih v massiv k= "<<k<<"\n";



return k;
}
 

HumFF

Ословед
"k = 1". Раньше показывал "k =4". Там просто какая-то функция strneght или как то так, не помню, увы :fie1:
 
Сверху