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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
#1

Как скопировать часть строки до определенного символа? - C++

14.12.2013, 18:19. Просмотров 3654. Ответов 7
Метки нет (Все метки)

Допустим, пользователь вводит с клавиатуры строку. Необходимо скопировать часть строки до какого-то определенного символа и поместить ее в переменную a, т.е. присвоить переменной a это значение. Как это можно сделать?
Я понимаю, что если бы количество символов до этого "определенного символа" было заранее известно, то можно было бы очень просто все сделать при помощи указателей, но оно не известно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как скопировать часть строки до определенного символа? (C++):

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа - C++
Добрый вечер. Ответ искал, но не нашёл. Предположим, есть строка: ABC|DEF Надо скопировать всё до | , т.е., в приведённом...

Обрезать/скопировать string до определенного символа - C++
Есть ли библиотечная функция для данных типа string, которая урезает или копирует строку до определенного символа?Типа strtok для char'ов....

Std::copy как скопировать часть строки массива byte? - C++
Вот из этой строки: BYTE pbHash; Нужно скопировать содержимое с 0й по 15ю ячейку, в эту строку: BYTE bAesKey; Так будет? ...

Скопировать часть строки и часть удалить - C++
1. Удалить из строки ее часть с заданной позиции и заданной длины. 2. Скопировать часть строки с определенной позиции и определенной...

Скопировать часть строки - C++
Как мне скопировать часть строки с элемента a по элемент b?

Скопировать часть строки - C++
Здравствуйте. Имеется 2 строки AnsiString str1 = "123456"; AnsiString str2; Как скопировать часть строки str1 в строку...

7
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.12.2013, 18:23 #2
Цитата Сообщение от Menma Посмотреть сообщение
но оно не известно.
Значит сначала посчитайте, или используйте классы с автоматчиеским управлением памятью (string).
0
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
14.12.2013, 19:34  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Значит сначала посчитайте, или используйте классы с автоматчиеским управлением памятью (string).
А как можно подсчитать количество символов до какого-то определенного, например?
Пробовала использовать цикл for, но все мои вариации заканчивались ошибками.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.12.2013, 19:45 #4
Цитата Сообщение от Menma Посмотреть сообщение
но все мои вариации заканчивались ошибками.
Покажите какую-нибудь из вариаций.
0
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
14.12.2013, 21:30  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Покажите какую-нибудь из вариаций.
Получилось вроде бы при помощи цикла while, с for совсем ничего не выходит.
Программа выдает число, обозначающее порядковый номер первого символа x из введенной строки, но как теперь использовать это, чтобы присвоить то, что стоит перед ним, переменной a? Я пока только учусь и еще не очень многое знаю.
Изначально подумывала применить тут функцию strcpy, но она ведь работает со строками, насколько я понимаю, а мне нужна переменная, а не последовательность символов.
Допустим, пользователь введет -432x. Мне нужно, чтобы переменной a было присвоено значение -432.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdafx.h>
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<string>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{float x;
int i;
char fx[50];
cout << "fx = ";
cin >> fx;
 
{int i = 0;
while (*(fx + i) != 'x')
{i++;}
cout << i;}
 
getch();
}
Прошу не обращать внимания на заголовки, там нет лишних, просто сейчас написана лишь малая часть программы.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.12.2013, 22:03 #6
Цитата Сообщение от Menma Посмотреть сообщение
Допустим, пользователь введет -432x. Мне нужно, чтобы переменной a было присвоено значение -432.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include<iostream>
#include<cstdlib>
using namespace std;
 
int main()
{
    int i;
    cin >> i; // вводим -432x
    
    // очистака потока ввода
    cin.clear();
    while (cin.get() != '\n');
    
    cout << i << endl; // в i -432
 
    system("pause");
}
0
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
15.12.2013, 21:09  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
include<iostream>
#include<cstdlib>
using namespace std;
 
int main()
{
    int i;
    cin >> i; // вводим -432x
    
    // очистака потока ввода
    cin.clear();
    while (cin.get() != '\n');
    
    cout << i << endl; // в i -432
 
    system("pause");
}
Совсем не то вы написали, но спасибо, что откликнулись.
Я разобралась сама: нужно было провести посимвольный анализ, составить отдельные строки из символов до какого-то определенного и использовать функцию atof для преобразования полученных строк в числа.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 22:08 #8
Цитата Сообщение от Menma Посмотреть сообщение
Совсем не то вы написали,
Я написал совсем то к вашему примеру:
Цитата Сообщение от Menma Посмотреть сообщение
Допустим, пользователь введет -432x. Мне нужно, чтобы переменной a было присвоено значение -432.
Для того, чтобы организовать ввод только числа, отсекая ненужное, совсем необязательно вот это делать:
Цитата Сообщение от Menma Посмотреть сообщение
нужно было провести посимвольный анализ, составить отдельные строки из символов до какого-то определенного и использовать функцию atof для преобразования полученных строк в числа.
cin >> это сам прекрасно делает. Пример кода (для дальнейших размышлений), как он это делает, я привёл.
0
15.12.2013, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 22:08
Привет! Вот еще темы с ответами:

Чтение строки до определенного символа - C++
Всем привет, столкнулся с такой вот проблемой: int main() { char text; cin.getline(text, 50); if(strlen(text) == 0) ...

Копирование строки до определенного символа - C++
Дан текстовый файл с командами типа INSERT(&quot;Ключ&quot;, Значение) \ FIND (&quot;Ключ&quot;) \ REMOVE (&quot;ключ&quot;) Собственно, нужно достать Ключ и значение,...

Вывод части строки после определенного символа - C++
Написал функцию: #include &lt;iostream.h&gt; #include &lt;string.h&gt; void main() { char stroka; cin&gt;&gt;stroka; char*primer; ...

Скопировать с конца строки std::string четыре символа в другую строку - C++
как функцией можно скопировать с конца строки 4 символа в другую? string a = &quot;123456&quot;; string b; результат: b =...


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

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

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