Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 16:20   #11
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Можно ли как то уже после объявления присваивать? т.е у меня к примеру уже есть объявленный string и я хочу в него забить char* массив
Логично предположить, что
Код:
std::string sstr;
...
sstr = cstr1;
)
netrino вне форума Ответить с цитированием
Старый 14.07.2010, 16:26   #12
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
char* str1 = "somestr";
char* str2 = new char[strlen(str1)];
strcpy(str2, str1);
а место для завершающего нуля? трагедия, трагеееедия!!
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.07.2010, 18:04   #13
Fedcomp
 
Аватар для Fedcomp
 
Регистрация: 13.06.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Логично предположить, что
Код:
std::string sstr;
...
sstr = cstr1;
)
string это массив char с нулевым байтом как последний элемент (и ещё куча функций для работы сразу со всем массивом и куча перегруженных операторов )
Просто строки вроде if (par == "-ip") не отрабатываются т.к это для компилятора выглядит как [-ip != -ip\0]. А функция strlen (проверить длину строки и добавить нуль байт как следующий элемент) тоже не отрабатывается корректно

Цитата:
Сообщение от pproger Посмотреть сообщение
Код:
char* str1 = "somestr";
char* str2 = new char[strlen(str1)];
strcpy(str2, str1);
а место для завершающего нуля? трагедия, трагеееедия!!
Я пытаюсь привести к string массив char который является аргументом функции main()

Последний раз редактировалось Fedcomp; 14.07.2010 в 18:11.
Fedcomp вне форума Ответить с цитированием
Старый 14.07.2010, 18:21   #14
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Я пытаюсь привести к string массив char который является аргументом функции main()
В функцию main из командной строки передаются указатели на строки (аргументы командой строки). А не массив типа char.
profi вне форума Ответить с цитированием
Старый 14.07.2010, 18:32   #15
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Fedcomp
это было не тебе адресовано, а автору этих строк
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.07.2010, 19:08   #16
Fedcomp
 
Аватар для Fedcomp
 
Регистрация: 13.06.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
В функцию main из командной строки передаются указатели на строки (аргументы командой строки). А не массив типа char.
int main(int argc, char* argv[])
Вот это правильное объявление? здесь тип char (не string). Точнее массив указателей на параметры командной строки. Удобнее оперировать строками, я пытаюсь привести массив из char в string (производительность в программе не особо нужна, это ведь проверка аргументов командной строки и их не будет больше 10)
Так как таких преобразований будет несколько, я хочу написать функцию для преобразования char в string. Точнее сделать функцию, в которую передается указатель на массив из char, и ссылка на объект типа string, после чего функция копирует содержимое массива в строку и добавляет \0 на конец. Проблема заключается в том что у меня не получается определить количество элементов массива char. Поэтому так и поставим вопрос, как определить размер массива char если у нас есть на него указатель?
Fedcomp вне форума Ответить с цитированием
Старый 14.07.2010, 19:13   #17
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Fedcomp
передать вместе с указателем и размер массива
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.07.2010, 21:07   #18
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

pproger, извиняюсь - забыл здесь добавить единичку, а потом просто скопипастил.
Fedcomp, а для сравнения двух строк можете использовать функцию strcmp().
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.07.2010, 22:48   #19
Fedcomp
 
Аватар для Fedcomp
 
Регистрация: 13.06.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2Fedcomp
передать вместе с указателем и размер массива
Отличное решение. Особенно для аргументов функции main() которые передаются как указатели
Fedcomp вне форума Ответить с цитированием
Старый 14.07.2010, 23:34   #20
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от Fedcomp Посмотреть сообщение
Отличное решение. Особенно для аргументов функции main() которые передаются как указатели
если это был сарказм, то не вышло. в main тоже передается размер массива. если бы ты читал книжки, то зал бы, что в сях единственный способ узнать размер массива (не строки, заметь, строка в сях частный случай массива) по указателю - это передать явно его размер.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char to string!!! marselik Общие вопросы C/C++ 3 01.06.2010 13:01
из string в char Xcopy Общие вопросы Delphi 2 10.07.2009 17:17
String и Char Volt Общие вопросы Delphi 3 17.02.2009 08:30
из string в char ShenDy Общие вопросы C/C++ 1 14.04.2008 11:01
char->string eds Общие вопросы .NET 1 28.11.2007 17:22