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

string => char[] - C++

Восстановить пароль Регистрация
 
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 18:34     string => char[] #1
Ничего не выходит из найденного в интернете(( подскажите как на выходе получить такой [] чар
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++ не переводит из string в char*
C++ char char* string и константные значения
Из char[] в string C++
C++ string into char []
Из char в string C++
C++ Из string в char
char* vs std::string C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
584 / 288 / 18
Регистрация: 06.07.2013
Сообщений: 948
Завершенные тесты: 1
28.11.2013, 18:35     string => char[] #2
C++
1
const char* buf = str.c_str();
только менять его содержимое нельзя, если надо менять то придется копировать через strcpy()
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 18:45  [ТС]     string => char[] #3
Так и знал что кто-нибудь подскажет этот способ...((
Дело в том что он мне не подходит, не подходит ни const char* ни char * а я работаю с одной из кастомных dll библиотек которая в качестве аргумента принимает именно char [] и дальше делает с ним расчет, а все конверты в переменную с указателями там не принимаются!
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
28.11.2013, 18:46     string => char[] #4
beats, ручками, ручками)
Raali
584 / 288 / 18
Регистрация: 06.07.2013
Сообщений: 948
Завершенные тесты: 1
28.11.2013, 19:08     string => char[] #5
попробуй тогда вот так
C++
1
2
char buf[512];
strcpy(buf,str.c_str());
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 19:45  [ТС]     string => char[] #6
Не могу проверить работает или нет, так как у меня выявилась неопознанная ошибка после подключения #include <string> еще до начала работы с чаром, проиходит конфликт причем не в самом string а в CMATH.
Убрал инклуд стиринг ошибка исчезла, но как же без него? вот скриншот, там полная борода какой я еще не видел(((
Миниатюры
string => char[]  
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 19:58  [ТС]     string => char[] #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
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
28.11.2013, 20:01     string => char[] #9
beats, так у вас Си проект а не С++
Или файл с расширением .с прицепили вместо .срр
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 20:13  [ТС]     string => char[] #10
Да действительно, только это понял

Добавлено через 4 минуты
заменил расширение на .срр и заработало!
также последний вариант от Raali помог.
Все проблемы решены, тему можно закрывать, СПС
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
28.11.2013, 20:15     string => char[] #11
Не по теме, подскажите, c_str() - она возвращает копию? Т.е. после вызова, я должен позаботиться о соответствующем delete?
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 20:35  [ТС]     string => char[] #12
nexen, да ты прав. Это необязательно, но если для тебя критично то удаляй. см. http://www.cplusplus.com/reference/string/string/c_str/
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5585 / 3064 / 344
Регистрация: 29.11.2010
Сообщений: 8,254
28.11.2013, 20:37     string => char[] #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     string => char[] #14
beats, MrGluck, кому из вас верить? ;(
http://www.cplusplus.com/reference/string/string/c_str/ --- читал первым делом, но строчки типа "возвращает копию той информации, что в string" не нашел, но и обратного "возвращает саму информацию string-а" тоже
beats
 Аватар для beats
98 / 36 / 4
Регистрация: 09.12.2012
Сообщений: 565
28.11.2013, 21:17  [ТС]     string => char[] #15
nexen, доверяй но проверяй...
не ленись, найди метод в string.h и проанализируй его исполнение
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5585 / 3064 / 344
Регистрация: 29.11.2010
Сообщений: 8,254
28.11.2013, 23:56     string => char[] #16
Цитата Сообщение от beats Посмотреть сообщение
nexen, доверяй но проверяй...
не ленись, найди метод в string.h и проанализируй его исполнение
string.h не содержит определения (фактически синонима) string и методов для работы с ним.
И вообще string определен в <string>

Добавлено через 2 минуты
nexen, она возвращает указатель
Returns a pointer to an array
Сами данные, на которые он указывает, освободятся в деструкторе string и нечего вне класса его начинкой управлять.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
29.11.2013, 06:54     string => char[] #17
MrGluck, в том то и дело, что "Returns a pointer to an array" может означать как то, что она возвращает данные на private (WTF? Not objective-oriented) поле string, а может означать и новую копию array.
Подразумеваю именно:
Цитата Сообщение от MrGluck Посмотреть сообщение
1
2
3
4
5
6
int main()
{
* * std::string tmp = "Hello world!";
* * const char* s = tmp.c_str(); //если это просто доступ к полю, то, конечно же, оно само удалится со деструктором tmp, иначе необходим delete.
* * std::cout << s << std::endl;
}
beats, причем тут string.h?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2013, 10:45     string => char[]
Еще ссылки по теме:

из char* в string C++
C++ string[] в char[][] или char[]
C++ Char to string
C++ String в char
C++ Из string в const char

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
29.11.2013, 10:45     string => char[] #18
Цитата Сообщение от nexen Посмотреть сообщение
const char* s = tmp.c_str(); //если это просто доступ к полю, то, конечно же, оно само удалится со деструктором tmp, иначе необходим delete.
Если бы был бы необходим delete, то это было бы указано в стандарте; тем более у этого метода сложность константная, так что никаких копий.
Цитата Сообщение от nexen Посмотреть сообщение
что она возвращает данные на private (WTF? Not objective-oriented) поле string
А в чём проблема с этим? Состояние объекта без кастов с помощью этого метода всё равно не изменишь, а операция необходимая.
Yandex
Объявления
29.11.2013, 10:45     string => char[]
Ответ Создать тему
Опции темы

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