Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строковые функции в С++, Необходима помощь в пояснении функций. 
:(
    Опции темы
EvGeniy2605
  Дата 7.2.2008, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.9.2007

Репутация: нет
Всего: нет



Короче дело такое:

Я почитал книженции но все равно не могу найти кое что, а именно как в с++ реализованы строковые функции.
В частности:
Ка перевести число в строку?
Как соединить две строки?
Как выдернуть из строки iтый символ и если это цифра преобразовать обратно в число? 

Заранее спасибо. Буду очень благодарен также если меня ткнут носом в книгу где это подробно описано.  smile 
PM MAIL   Вверх
reat
Дата 7.2.2008, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 12.8.2007
Где: Новосибирск

Репутация: нет
Всего: нет



Для соединения нескольких строк перегружены операторы '+' и '+='
Например:
Код

string a = "Hello "
string b = "World"
string c = a + b;  // == "Hello World"

PM MAIL ICQ GTalk   Вверх
Rickert
Дата 7.2.2008, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



EvGeniy2605, в С++ таких реализаций нет. Они есть в стандартных либах. Какие ты используешь для работы со строкой?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
chaos
Дата 7.2.2008, 09:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Цитата

Ка перевести число в строку?


Код

ostringstream oss;
oss << 0xffff;
string s = oss.str();


Это сообщение отредактировал(а) chaos - 7.2.2008, 09:40
PM WWW   Вверх
TeAnton
Дата 7.2.2008, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 5.7.2007

Репутация: нет
Всего: нет



Это здорово объектноориентированно, но внутреннее чувство такое, что это изврат.
Код


#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    ostringstream ss;
    ss << 2345;
    string s = ss.str();
    cout << s << endl;
    
    istringstream is(s);
    int i;
    is >> i;
    cout << i << endl;
}



2All: А вы как делаете?

Добавлено через 10 минут и 17 секунд
Вытащить символ из строки, как из массива с помощью квадрантых скобок [], индексация с нуля.
Преобразовать в число можно также через istringstream, я делаю проще вычитаю из результата char литерал '0', если результат от 0 до 9, то внутри была цифра. Пока еще не встречал кодировок, где это может не работать. Еще есть способы из C: atoi, sprintf, isdigit, isalpha и т.п.

PM MAIL   Вверх
Mayk
Дата 7.2.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 3
Всего: 134



Цитата(TeAnton @  7.2.2008,  15:17 Найти цитируемый пост)


2All: А вы как делаете?

std::string str = stringof(1234);



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
warmonger_
Дата 7.2.2008, 17:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата(TeAnton @  7.2.2008,  10:17 Найти цитируемый пост)
2All: А вы как делаете?

Код

void Format( int i, string &s)
{
   s=lexical_cast<string>(i); // boost
}




Это сообщение отредактировал(а) warmonger_ - 7.2.2008, 17:34
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
anatox91
Дата 7.2.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



Цитата

Как соединить две строки?

есть функция strcat из cstring...  smile 


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
EvGeniy2605
  Дата 8.2.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.9.2007

Репутация: нет
Всего: нет



Часть проблем разрешились осталась еще одна:
 при использовании cin он считывает только слово! А мне надо предложение с пробелами как это можно сделать?
PM MAIL   Вверх
JackYF
Дата 8.2.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(EvGeniy2605 @  8.2.2008,  16:25 Найти цитируемый пост)
А мне надо предложение с пробелами как это можно сделать? 

cin.getline


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
EvGeniy2605
  Дата 8.2.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 7.9.2007

Репутация: нет
Всего: нет



Код

#include "stdafx.h"
#include <iostream.h>
#include <ctime>
#include <math.h>

// Из стандартного пространства имен делаем видимыми
// два монипулятора для вывода текста
using std::wcout;
using std::endl;
using std::cin; 
char str[255];


char q;
int k;


int _tmain(int argc, _TCHAR* argv[])
{
    cin.getline>>str;
    for(int i=0; str[i] != '\0'; i++) {
    if (str[i] == ' ') k++;
    }
    wcout<<k;
    


    cin>>q;
    return 0;
}


Это должно считать пробелы но выдает:
[C++ Error] Unit1.cpp(28): E2235 Member function must be called or its address taken
Есть у кого мысли отчего это? 
PM MAIL   Вверх
JackYF
Дата 8.2.2008, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(EvGeniy2605 @  8.2.2008,  17:03 Найти цитируемый пост)
cin.getline>>str;

о, ёлки... прочитать документацию никак?  smile 

getline - вообще-то функция, соответственно вызываться должна с аргументами:
Код

cin.getline(str, sizeof(str));




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
anatox91
Дата 8.2.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 1
Всего: 13



или включи 
Код

#include <cstdio>


и получай строку 

Код

gets(str);

str - символьный массив, в который надо поместить строку



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
tsrtg
Дата 12.2.2008, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.2.2008

Репутация: нет
Всего: нет



Лучше использовать не cin.getline, а std::getline, который читает прямо в строку и не требует буфера фиксированного размера.

Код


string str;
getline(cin, str);


PM MAIL   Вверх
jonie
Дата 13.2.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

Пока еще не встречал кодировок, где это может не работать
например UCS-2, UTF-16,UTF-32, UTF-8 .......


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.