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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
Menma
 Аватар для Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
14.12.2013, 18:19     Как скопировать часть строки до определенного символа? #1
Допустим, пользователь вводит с клавиатуры строку. Необходимо скопировать часть строки до какого-то определенного символа и поместить ее в переменную a, т.е. присвоить переменной a это значение. Как это можно сделать?
Я понимаю, что если бы количество символов до этого "определенного символа" было заранее известно, то можно было бы очень просто все сделать при помощи указателей, но оно не известно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.12.2013, 18:23     Как скопировать часть строки до определенного символа? #2
Цитата Сообщение от Menma Посмотреть сообщение
но оно не известно.
Значит сначала посчитайте, или используйте классы с автоматчиеским управлением памятью (string).
Menma
 Аватар для Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
14.12.2013, 19:34  [ТС]     Как скопировать часть строки до определенного символа? #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Значит сначала посчитайте, или используйте классы с автоматчиеским управлением памятью (string).
А как можно подсчитать количество символов до какого-то определенного, например?
Пробовала использовать цикл for, но все мои вариации заканчивались ошибками.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
14.12.2013, 19:45     Как скопировать часть строки до определенного символа? #4
Цитата Сообщение от Menma Посмотреть сообщение
но все мои вариации заканчивались ошибками.
Покажите какую-нибудь из вариаций.
Menma
 Аватар для 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();
}
Прошу не обращать внимания на заголовки, там нет лишних, просто сейчас написана лишь малая часть программы.
alsav22
5282 / 4801 / 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");
}
Menma
 Аватар для 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 для преобразования полученных строк в числа.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 22:08     Как скопировать часть строки до определенного символа?
Еще ссылки по теме:

Как обрезать строку типа wchar_t* до определенного символа? C++
C++ Обрезать/скопировать string до определенного символа
C++ Копирование строки до определенного символа

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 22:08     Как скопировать часть строки до определенного символа? #8
Цитата Сообщение от Menma Посмотреть сообщение
Совсем не то вы написали,
Я написал совсем то к вашему примеру:
Цитата Сообщение от Menma Посмотреть сообщение
Допустим, пользователь введет -432x. Мне нужно, чтобы переменной a было присвоено значение -432.
Для того, чтобы организовать ввод только числа, отсекая ненужное, совсем необязательно вот это делать:
Цитата Сообщение от Menma Посмотреть сообщение
нужно было провести посимвольный анализ, составить отдельные строки из символов до какого-то определенного и использовать функцию atof для преобразования полученных строк в числа.
cin >> это сам прекрасно делает. Пример кода (для дальнейших размышлений), как он это делает, я привёл.
Yandex
Объявления
15.12.2013, 22:08     Как скопировать часть строки до определенного символа?
Ответ Создать тему
Опции темы

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