Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2008, 23:57   #1
Ceprey
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 47
По умолчанию разбить строку

Здравствуйте! Не подскажете, какая функция С++ разбивает строку на две по заданному слову-разделителю? Спасибо заранее.
Ceprey вне форума Ответить с цитированием
Старый 25.03.2008, 00:44   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Что значит "разбивает"?? А находит подстроку в строке strstr.
Код:
char *strstr(const char *string, const char *strSearch);
Возвращает указатель на подстроку (первую из, если их несколько) или NULL если такой нет.
B_N вне форума Ответить с цитированием
Старый 25.03.2008, 01:30   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

по символу-разделителю - strtok, а по строке наверно нету такой. ручками резатьстроку наверно придеца
pu4koff вне форума Ответить с цитированием
Старый 25.03.2008, 07:38   #4
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

Код:
string str("Строка, которую нужно разбить.");
string separ("разделитель");
string::size_type pos = str.find(separ); // Позиция первого символа строки-разделителя.
string first = str.substr(0, pos); // Строка до разделителя.
string second = str.substr(pos+separ.length()); // Строка после разделителя.
alexx777 вне форума Ответить с цитированием
Старый 25.03.2008, 09:47   #5
Ceprey
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 47
По умолчанию

Спасибо! Кстати, Alexxx777, как объекты этого класса можно вывести на экран, а то cout, printf, strcpy с ним не проходит...?
Ceprey вне форума Ответить с цитированием
Старый 25.03.2008, 15:59   #6
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

С объектами string должен работать cout:

Код:
string str("TEXT");
cout << str;
Можно перевести string в const char*:

Код:
string str("TEXT");
const char* cstr = str.c_str();
и использовать cstr для работы с функциями printf(), strcpy() ...
alexx777 вне форума Ответить с цитированием
Старый 26.03.2008, 00:00   #7
Ceprey
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 47
По умолчанию

Спасибо, преобразование помогло! А вот cout ne берет все равно. Проблему я решил, уже просто интересно разобраться, если должно работать, но не работает, может, кто-то знает, почему? Вот весь код (среда: VS 2005)

Код:
#include <iostream>
#include "string.h"
#include "windows.h"
using namespace std;

int main()
{
SetConsoleCP (1251);
SetConsoleOutputCP(1251);

string str("Ñòðîêà, êîòîðóþ íóæíî ðàçáèòü.");   
string separ("êîò");   
string::size_type pos = str.find(separ); // Ïîçèöèÿ ïåðâîãî ñèìâîëà ñòðîêè-ðàçäåëèòåëÿ.   
string first = str.substr(0, pos); // Ñòðîêà äî ðàçäåëèòåëÿ.   
string second = str.substr(pos+separ.length());

const char* cfirst = first.c_str();
const char* csecond = second.c_str();
cout<<cfirst<<endl;
cout<<csecond<<endl;
cout<<first;
return 1;
}
Ceprey вне форума Ответить с цитированием
Старый 26.03.2008, 00:05   #8
alexx777
Пользователь
 
Регистрация: 20.02.2008
Сообщений: 75
По умолчанию

В каком смысле "не работает"? Не компилируется?
alexx777 вне форума Ответить с цитированием
Старый 26.03.2008, 00:38   #9
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Ceprey Посмотреть сообщение
Спасибо, преобразование помогло! А вот cout ne берет все равно. Проблему я решил, уже просто интересно разобраться, если должно работать, но не работает, может, кто-то знает, почему? Вот весь код (среда: VS 2005)

Код:
#include <iostream>
#include "string.h"
#include "windows.h"
using namespace std;

int main()
{
SetConsoleCP (1251);
SetConsoleOutputCP(1251);

string str("Ñòðîêà, êîòîðóþ íóæíî ðàçáèòü.");   
string separ("êîò");   
string::size_type pos = str.find(separ); // Ïîçèöèÿ ïåðâîãî ñèìâîëà ñòðîêè-ðàçäåëèòåëÿ.   
string first = str.substr(0, pos); // Ñòðîêà äî ðàçäåëèòåëÿ.   
string second = str.substr(pos+separ.length());

const char* cfirst = first.c_str();
const char* csecond = second.c_str();
cout<<cfirst<<endl;
cout<<csecond<<endl;
cout<<first;
return 1;
}
Ceprey, это из раздела "ЁПРСТ" (дальше знаете). Что ещё за
Код:
#include "string.h"
Меняйте на
Код:
#include <string>
B_N вне форума Ответить с цитированием
Старый 26.03.2008, 09:35   #10
Ceprey
Пользователь
 
Регистрация: 01.03.2008
Сообщений: 47
По умолчанию

Спасибо, помогло! Извините еще раз за примитивные вопросы новичка...
Ceprey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить число по числам? maxim_ov Microsoft Office Excel 3 04.08.2008 16:23
Разбить файл на 4 части borzoni Паскаль, Turbo Pascal, PascalABC.NET 7 31.05.2008 10:51
Разбить список на части fotobra Microsoft Office Excel 1 23.02.2008 03:13
как разбить таблицу при копировании StasSv Microsoft Office Excel 3 11.02.2008 10:23
разбить ячейку и ивписать тхт Axe_L Помощь студентам 2 22.10.2007 14:50