Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TheTangro
1 / 1 / 3
Регистрация: 24.09.2015
Сообщений: 93
#1

Копирование строк

12.04.2016, 22:33. Просмотров 394. Ответов 6
Метки нет (Все метки)

И опять столкнулся с проблемой. Описываю функцию, которая копирует k символов из строки str в строку s.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void ttobrezka(string *s, string *str, int k)
{
    int i;
    string s1, s2;
    s1 = *s;
    s2 = *str;
    for (i = 0; i < k; i++)
    {
        s1 += s2[i];
    }
    *s = s1;
}
Дело в том, что она копирует k символов, но делает это k раз. То есть, если ей передать строку 12345 и k=2, то она выведет 1212.
При активном курении гугла нашлось, что существует функция strncpy();, но она для массивов символов типа char.
Да и написать функцию нужно самому. Подскажите, пожалуйста, что я делаю не так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2016, 22:33
Ответы с готовыми решениями:

Используя функцию копирования строк, организуйте конкатенацію и копирование строк в четвертый массив, содержащий полные имена
Пожалуйста с этим заданием. Написать программу, которая описывает четыре...

копирование строк
ребят, не подкажете как скопировать строку из искомой, начиная с символа а и...

Копирование строк
Доброго времени суток! Передо мной стоит следующая задача: &quot;Дан символьный...

Копирование строк
У Страуструпа приведен такой пример для копирования одной строки в другую: ...

Копирование строк
Нужно сравнить две строки не учитывая пробелы. Ошибка где-то в копировании a1...

6
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,472
12.04.2016, 22:46 #2
1) Вызываете ttobrezka два раза?
2) Освойте передачу аргумента по ссылке, а не по указателю.
0
Tuma
60 / 41 / 20
Регистрация: 28.09.2013
Сообщений: 193
12.04.2016, 22:58 #3
TheTangro, нет необходимости работать со string через указатели, у string есть свой метод для копирования substr(pos, n), который возвращает n символов с начиная с позиции pos. А то что вы написали у меня не работает
C++
1
2
3
string a = "afafa";
string b ="";
b=a.substr(0, 2);
0
TheTangro
1 / 1 / 3
Регистрация: 24.09.2015
Сообщений: 93
12.04.2016, 23:01  [ТС] #4
Цитата Сообщение от Tuma Посмотреть сообщение
TheTangro, нет необходимости работать со string через указатели, у string есть свой метод для копирования substr(pos, n), который возвращает n символов с начиная с позиции pos.
C++Выделить код
1
2
3
string a = "afafa";
* * string b ="";
* * b=a.substr(0, 2);
Да, я понимаю, но мне нужно именно самому реализовать функцию(

Добавлено через 1 минуту
Цитата Сообщение от Renji Посмотреть сообщение
1) Вызываете ttobrezka два раза?
2) Освойте передачу аргумента по ссылке, а не по указателю.
Вызываю один раз. Нужно именно по указателю
0
Renji
2102 / 1543 / 470
Регистрация: 05.06.2014
Сообщений: 4,472
12.04.2016, 23:02 #5
Цитата Сообщение от TheTangro Посмотреть сообщение
Вызываю один раз. Нужно именно по указателю
Тогда показывайте весь код. Лично у меня все работает.
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
#include<iostream>
 
using namespace std;
 
void ttobrezka(string *s, string *str, int k)
{
    int i;
    string s1, s2;
    s1 = *s;
    s2 = *str;
    for (i = 0; i < k; i++)
    {
        s1 += s2[i];
    }
    *s = s1;
}
 
int main()
{
    string s1,s2="12345";
    ttobrezka(&s1,&s2,2);
    cout<<s1<<endl;
    return 0;
}
0
Ferrari F1
791 / 521 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
12.04.2016, 23:07 #6
C++
1
2
3
4
5
6
7
8
void ttobrezka(const string* s, string* str, int k)
{
    int i(0);
    *str = "";
    for (; i < k; i++)
        (*str)[i] = (*s)[i];
    (*str)[i] = '\0';
}
0
Tuma
60 / 41 / 20
Регистрация: 28.09.2013
Сообщений: 193
12.04.2016, 23:13 #7
TheTangro, скорее всего вы где-то выводите 2 раза значение строки, потому что ваш код работает корректно ищите ошибку вида
C++
1
cout << str1 << str1;
0
Изображения
 
12.04.2016, 23:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2016, 23:13

Копирование строк
Добрый вечер. Столкнулся с Проблемой: надо скопировать содержимое &quot;buff&quot; в...

Копирование строк
Всем доброго времени суток. У меня такой вопрос как можно копировать строка в...

Копирование Строк
В общем, я продолжаю разборки с С(++) и у меня снова вопрос, ответ на который...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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