Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
#1

string => char[] - C++

28.11.2013, 18:34. Просмотров 460. Ответов 17
Метки нет (Все метки)

Ничего не выходит из найденного в интернете(( подскажите как на выходе получить такой [] чар
C++
1
2
3
std::string str = "vasya.exe";
char buf[] = str; // ? error
char buf[] = "vasya.exe" // работает... да только так не нужно(((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 18:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос string => char[] (C++):

есть массив char. есть строка string. как присвоить значению string-a значение char-a? - C++
есть массив char. есть строка string. как присвоить значению string-a значение char-a?

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) - C++
Почему компилятор на это матерится? ObjA.Show("A"); deprecated conversion from string constant to 'char*' #include <iostream> ...

Строка: чем отличается строки string, char, char*? - C++
Помогите разобраться,совсем плохо идёт,чем отличается строки string,char,char* И если можно пару примеров Буду весьма признательна

Как преобразовать char* в string и вывести переменную string на экран? - C++
for (int k = 0; k < 10; k++) { int x = (int)rand() / RAND_MAX + rand() % 6 + 2; char *chars = new char; ...

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

char char* string и константные значения - C++
Робот может перемещаться в 4 направлениях c-Север, u- Юг, z- Запад, v- Восток ипринемать 3 цифровые команды 0-продолжать движение 1 на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
28.11.2013, 18:35 #2
C++
1
const char* buf = str.c_str();
только менять его содержимое нельзя, если надо менять то придется копировать через strcpy()
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 18:45  [ТС] #3
Так и знал что кто-нибудь подскажет этот способ...((
Дело в том что он мне не подходит, не подходит ни const char* ни char * а я работаю с одной из кастомных dll библиотек которая в качестве аргумента принимает именно char [] и дальше делает с ним расчет, а все конверты в переменную с указателями там не принимаются!
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.11.2013, 18:46 #4
beats, ручками, ручками)
Raali
623 / 327 / 34
Регистрация: 06.07.2013
Сообщений: 1,056
Завершенные тесты: 1
28.11.2013, 19:08 #5
попробуй тогда вот так
C++
1
2
char buf[512];
strcpy(buf,str.c_str());
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 19:45  [ТС] #6
Не могу проверить работает или нет, так как у меня выявилась неопознанная ошибка после подключения #include <string> еще до начала работы с чаром, проиходит конфликт причем не в самом string а в CMATH.
Убрал инклуд стиринг ошибка исчезла, но как же без него? вот скриншот, там полная борода какой я еще не видел(((
Миниатюры
string => char[]  
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 19:58  [ТС] #7
путем тыка понял что в проекте почему-то не работают глобальные библиотеки, а работают только при указании расширения файла, например не #include <string> а #include <string.h>.
Обявление стринга решил, а вот подключить std не получается((.
C++
1
using namespace std;
63 IntelliSense: необходимо использовать имя пространства имен
ps после #include <iostream> она видит std однако такой вид написания без н выдает множества ошибок. А #include <iostream.h> не видит(
Jupiter
28.11.2013, 20:01
  #8

Не по теме:

Цитата Сообщение от beats Посмотреть сообщение
Так и знал что кто-нибудь подскажет этот способ...((
Дело в том что он мне не подходит, не подходит ни const char* ни char * а я работаю с одной из кастомных dll библиотек которая в качестве аргумента принимает именно char [] и дальше делает с ним расчет, а все конверты в переменную с указателями там не принимаются!
Так и знал что вы это напишите так как матчасти не знаете

MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
28.11.2013, 20:01 #9
beats, так у вас Си проект а не С++
Или файл с расширением .с прицепили вместо .срр
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 20:13  [ТС] #10
Да действительно, только это понял

Добавлено через 4 минуты
заменил расширение на .срр и заработало!
также последний вариант от Raali помог.
Все проблемы решены, тему можно закрывать, СПС
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 20:15 #11
Не по теме, подскажите, c_str() - она возвращает копию? Т.е. после вызова, я должен позаботиться о соответствующем delete?
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 20:35  [ТС] #12
nexen, да ты прав. Это необязательно, но если для тебя критично то удаляй. см. http://www.cplusplus.com/reference/string/string/c_str/
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
28.11.2013, 20:37 #13
nexen, все зависит от того, куда записываете.
Если в динамический массив, то память разумеется надо освободить, иначе не нужно.
C++
1
2
3
4
5
6
7
8
int main()
{
    std::string tmp = "Hello world!";
    char* s = new char[tmp.length()];
    std::strcpy(s, tmp.c_str());
    std::cout << s << std::endl;
    delete[] s;
}
но
C++
1
2
3
4
5
6
int main()
{
    std::string tmp = "Hello world!";
    const char* s = tmp.c_str();
    std::cout << s << std::endl;
}
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 21:02 #14
beats, MrGluck, кому из вас верить? ;(
http://www.cplusplus.com/reference/string/string/c_str/ --- читал первым делом, но строчки типа "возвращает копию той информации, что в string" не нашел, но и обратного "возвращает саму информацию string-а" тоже
beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 21:17  [ТС] #15
nexen, доверяй но проверяй...
не ленись, найди метод в string.h и проанализируй его исполнение
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 21:17
Привет! Вот еще темы с ответами:

ошибка в программе (cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*') - C++
int main() { string fileName, currWord, currMax = &quot;&quot;; cin&gt;&gt;fileName; freopen(fileName, &quot;r&quot;, stdin); while...

string[] в char[][] или char[] - C++
Приветствую! Можно ли одномерный массив типа string переписать в двумерный или одномерный типа char? Если да, то как? Заранее спасибо...

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Из char[] в string - C++
Есть массив char ch и переменная string str, необходимо второй элемент массива ch, т.е. ch передать в переменную str (типа str = ch). Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.11.2013, 21:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru