Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
TheTangro
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 83
#1

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

12.04.2016, 22:33. Просмотров 307. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование строк (C++):

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

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

Копирование Строк - C++
В общем, я продолжаю разборки с С(++) и у меня снова вопрос, ответ на который ув. тов. Google не дал. Гад! Задача: даны три строки,...

копирование строк - C++
Как на языке Си скопировать из строки s1 в строку s2 n символов с k-ой позиции?

копирование строк - C++
ребят, не подкажете как скопировать строку из искомой, начиная с символа а и заканчивая символом б? #include &quot;stdafx.h&quot; #include...

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

6
Renji
2084 / 1442 / 331
Регистрация: 05.06.2014
Сообщений: 4,171
12.04.2016, 22:46 #2
1) Вызываете ttobrezka два раза?
2) Освойте передачу аргумента по ссылке, а не по указателю.
0
Tuma
60 / 41 / 18
Регистрация: 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
0 / 0 / 0
Регистрация: 24.09.2015
Сообщений: 83
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
2084 / 1442 / 331
Регистрация: 05.06.2014
Сообщений: 4,171
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
623 / 520 / 101
Регистрация: 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 / 18
Регистрация: 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
Привет! Вот еще темы с ответами:

Копирование строк - C++
У Страуструпа приведен такой пример для копирования одной строки в другую: void cpy (char* p, const char* q) { while...

копирование строк - C++
Скопировать из файла F1 в файл F2 все строки, кроме той строки, в которой больше всего гласных букв. Ну или просто скопировать строку...

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

Копирование определенных строк - C++
Всем привет. Задача скопировать строки из txt файла начиная с 16-ой строки в новый txt файл. Есть код но он копирует весь файл целиком....


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

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

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