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

Массив строк преобразовать в строку - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 01:39     Массив строк преобразовать в строку #1
как преобразовать массив строк в строку через разделитель, то есть дано: "строка1" "строка2" "строка3"
а нужно получить "строка1, строка2, строка3"?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 14:34  [ТС]     Массив строк преобразовать в строку #21
Слушай, а если мне что-то типо такого нужно сделать, то как быть?
отдать функции двумерный массив и получить строку через разделитель?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
char* arr(char** str)
{
    int rez=0;
    for (int q=0; str[q] != '\0'; q++)
    {
        if (*str[q]==':')
        {
            q++;
            rez++;
        }
    }
    int len = 0; 
    len += (q-rez)+1;
    char* result = new char[len];
    *result = '\0';
    for( int i=0; i<(q-rez); ++i )
    {
        strcat(result, str[i]);
        strcat(result, "," );
    }
    return result;
}
int main()
{
    setlocale(LC_ALL,"Rus");
    char* str[] = {"Hello:world:how:are"};
    char* str1 = arr(str);
    std::cout << str1 << std::endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 14:45     Массив строк преобразовать в строку #22
Цитата Сообщение от fara-on Посмотреть сообщение
если мне что-то типо такого нужно сделать, то как быть?
Преобразовать один разделитель в другой? Не понял сути.
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 14:47  [ТС]     Массив строк преобразовать в строку #23
ну дан массив строк, он подается функции как параметр, и вернуть функция должна вернуть строку(массив), через запятую(например,есть 4 слова все на новой строке, необходимо их вывести в одну строку через разделитель)
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 14:55     Массив строк преобразовать в строку #24
Цитата Сообщение от fara-on Посмотреть сообщение
все на новой строке
это как?
А с возвратом надо определиться, куда в итоге пойдет результат. От этого может зависеть способ возврата.
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 15:17  [ТС]     Массив строк преобразовать в строку #25
смотри, есть функция которая создает массив строк по строке с разделителями, убирая их
а как сделать наоборот по массиву строк создает строку?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 15:27     Массив строк преобразовать в строку #26
Цитата Сообщение от fara-on Посмотреть сообщение
а как сделать наоборот по массиву строк создает строку?
Всё же расписано в сообщении #10. Если нужно оформить в функцию, то надо решить, кто выделяет/освобождает память под итоговую строку. Потому что можно:
A) Выделить память внутри функции, вернуть указатель и не забыть его освободить когда станет не нужен.
B) Выделить память ДО функции и передать в нее указатель на эту память. Тут возврат вообще не нужен.
C) Использовать более высокоуровневые конструкции (типа std::string, std::vector ... )
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 16:20  [ТС]     Массив строк преобразовать в строку #27
Вот что у меня получилось, но только три слова разбирает(те три слова через запятую только печатает), чего мне не хватает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char* arr(char** str)
{
    int len = 0;
    int i;
    for( i=0; i<'\0'; i++ )
    {
        len = strlen(str[i]);
    }
    char* result = new char[strlen(str[i])];
    *result ='\0';
    for(int i=0; i<strlen(str[i]); i++)
    {
        strcat(result, str[i]);
        strcat(result, ",");
    }
    return result;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 16:24     Массив строк преобразовать в строку #28
Цитата Сообщение от fara-on Посмотреть сообщение
чего мне не хватает?
судя по коду - многого
Цитата Сообщение от fara-on Посмотреть сообщение
C++
1
2
3
4
for( i=0; i<'\0'; i++ ) 
{ 
   len = strlen(str[i]); 
}
Какой в этом сакральный смысл?
P.S. По ходу, Вы вообще не врубаетесь в то что пишете.
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 16:27  [ТС]     Массив строк преобразовать в строку #29
имел ввиду подсчет длины слова строки
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 16:30     Массив строк преобразовать в строку #30
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <cstring>
 
char* OneLongString( const char** arr, int size )
{
    int len = 0;
    for( int i=0; i<size; ++i )
    {
        len += strlen(arr[i]); // Сумма длин всех строк
    }
 
    len += size+1; // Добавляем на разделитель и финальный ноль
 
    char* result = new char[len];
    *result = 0; // Инициализируем итоговую строку
 
    for( int i=0; i<size; ++i )
    {
        strcat(result, arr[i]);
        strcat(result, "," );
    }
 
    result[strlen(result)-1] = 0;
 
    return result;
}
 
 
int main()
{
    const char* arr[] = {"one","two","three"};   
    const int size = sizeof(arr)/sizeof(*arr);
    
    char* result = OneLongString( arr, size );
 
    std::cout << result << std::endl;
 
    delete [] result;
}
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 17:05  [ТС]     Массив строк преобразовать в строку #31
последняя просьба, можно поподробнее
Цитата Сообщение от Tulosba Посмотреть сообщение
const int size = sizeof(arr)/sizeof(*arr)
объяснить, в целом все понял, Спасибо!
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
08.08.2013, 17:28     Массив строк преобразовать в строку #32
C++
1
const int size = sizeof(arr)/sizeof(*arr)
sizeof(имя_массива) возвращает кол-во байт, которые занимает массив
sizeof(*имя_массива) возвращает кол-во байт, занимаемое одним элементом массива (можно записать так же как sizeof(имя_массива[0]) ) или взять любой другой элемент.
Делим одно на другое - получаем кол-во элементов в массиве. Ферштрейн?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2013, 17:32     Массив строк преобразовать в строку
Еще ссылки по теме:

Преобразовать массив цифр в строку для вывода на cout<< C++
C++ Как строку, заполненную числами, преобразовать в числовой массив?
C++ Как преобразовать строку char в массив int?

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

Или воспользуйтесь поиском по форуму:
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 17:32  [ТС]     Массив строк преобразовать в строку #33
спасибо! теперь ферштейн)))
Yandex
Объявления
08.08.2013, 17:32     Массив строк преобразовать в строку
Ответ Создать тему
Опции темы

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