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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
#1

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

08.08.2013, 01:39. Просмотров 1581. Ответов 32
Метки нет (Все метки)

как преобразовать массив строк в строку через разделитель, то есть дано: "строка1" "строка2" "строка3"
а нужно получить "строка1, строка2, строка3"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2013, 01:39     Массив строк преобразовать в строку
Посмотрите здесь:

ПреобразоваТЬ строку символов в массив - C++
#include <cstdio> #include <cctype> #include <iostream> #include <cmath> #include "QTime" void stuToArr(char s, int ar,...

Преобразовать массив символов в строку - C++
Правильна ли запись в strs , нужно что бы значения переменных последовательно были записаны в strs для получения примерно такой строки...

Преобразовать массив Int в массив строк - C++
Помогите пожалуйста с решением. Нужно в каждый элемент массива string положитm элемент массива int. Т.е из int i={1,12,100} получить...

Как преобразовать строку в массив чисел? - C++
символы вводятся через пробел. Программа сканирует только до пробела и делит цифру на числа. Как сделать чтобы оно сканировало цифры...

Обработка строк. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами - C++
Дана строка символов. Преобразовать строку, удалив из нее все символы, не являющиеся буквами или цифрами.

Корректно преобразовать массив кодов символов в строку string - C++
Здравствуйте уважаемые Гуру! Понадобилось обмениваться зашифрованными строками между php и С++ Нашел абсолютно рабочий алгоритм RC4...

Преобразовать массив цифр в строку для вывода на cout<< - C++
Реализую класс длинных чисел (только+). Числа представляю в виде массиве, где каждый элемент это цифра. Но не могу понять, как его...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
08.08.2013, 12:53     Массив строк преобразовать в строку
  #16

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Если компилятору можно, я тоже хочу.
Угу и преподу/заказчику так же: раз компилятору можно так запятую ставить, то я тоже буду - пофигу что в примере ее нету.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
08.08.2013, 12:59
  #17

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Ну так чего тогда до меня докопался?
Мне просто не понятно каким боком тут компилятор вообще?
Да и какую ошибку он должен выдать - "В сформированной Вами строке в конце присутствует лишняя запятая"?
Название: Безымянный.png
Просмотров: 39

Размер: 740 байт

Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.08.2013, 13:43     Массив строк преобразовать в строку #18
Цитата Сообщение от Croessmah Посмотреть сообщение
Мне просто не понятно каким боком тут компилятор вообще?
C++
1
2
enum e { one, };
int v[] = {1,2,3,};
Добавлено через 3 минуты
А чтобы избавиться от запятой в конце, достаточно добавить одну строку:
C++
1
result[strlen(result)-1] = 0;
Croessmah
08.08.2013, 13:51
  #19

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
int v[] = {1,2,3,};
какое отношения эта запятая имеет к запятой в сформированном тексте?
На которую, собственно, и указал Catstail в посте #6
Цитата Сообщение от Catstail Посмотреть сообщение
ching0n, в конце будет лишняя запятая
и я в посте #11
Цитата Сообщение от Croessmah Посмотреть сообщение
Tulosba, лишняя запятая в конце

Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.08.2013, 14:03     Массив строк преобразовать в строку #20
Цитата Сообщение от Croessmah Посмотреть сообщение
какое отношения эта запятая имеет к запятой в сформированном тексте?
Ровно то, что во всех случаях речь идет о "запятой в конце последовательности".
Что даже разработчики компилятора разрешили писать ее в конце перечислений, чтобы не накладывать лишних ограничений на генераторы кода. У ТС по сути как раз генерация последовательности. Короче, для ТС есть решения как с запятой, так и без - пусть выбирает любое. Я, вроде бы, всё сказал, что хотел
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.08.2013, 14:55     Массив строк преобразовать в строку #24
Цитата Сообщение от fara-on Посмотреть сообщение
все на новой строке
это как?
А с возвратом надо определиться, куда в итоге пойдет результат. От этого может зависеть способ возврата.
fara-on
0 / 0 / 0
Регистрация: 17.07.2013
Сообщений: 15
08.08.2013, 15:17  [ТС]     Массив строк преобразовать в строку #25
смотри, есть функция которая создает массив строк по строке с разделителями, убирая их
а как сделать наоборот по массиву строк создает строку?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
имел ввиду подсчет длины слова строки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2013, 16:30     Массив строк преобразовать в строку
Еще ссылки по теме:

Как строку, заполненную числами, преобразовать в числовой массив? - C++
Привет всем. Кто-нибудь знает как строку заполненную числами преобразовать в числовой массив? Сама смогла найти только как с помощью...

Преобразовать двумерный массив в одномерный, удаляя каждую вторую строку - C++
Подскажите пожалуйста как 2D массив преобразовать в 1D, при этом удаляя каждую 2рую строку. Прилагаю свой вариант кода... Мб подскажите...

Преобразовать строку String в массив #define byte_t unsigned char и обратно - C++
Собственно танцы с бубном долгое время. Подскажите пожалуйста, как правильно и оптимально это делать. Каждый символ строки при...

Строку в массив строк - C++
Здравствуйте, написал функцию, которая записывает слово, как отдельный элемент массива, но я получаю ошибку Debug Assertion Failed ...

Как поместить в массив строк строку - C++
Есть такой вот массив char s; ну или char** s; я никак не могу разобраться в этих указателях(( 1.Как поместить в него строку 2.Как...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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;
}
Yandex
Объявления
08.08.2013, 16:30     Массив строк преобразовать в строку
Ответ Создать тему
Опции темы

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