Показать полную графическую версию : строки в С++
из строки IN = "aa dd ff rr" надо создать массив строк OUT :"aa","dd","ff","rr".
длина IN известна.
пожалуйста не бросайте в беде начинающего!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vlad Drakula
26-06-2004, 19:30
rodman
добро позаловать на форум ;)
я помогу тебе с этой проблеммной ( чуть поздже, сейчс просто нет времени чтобы напистаь соответсвующий код), но я должен пердупредит что в результате я на выделяю определенное количество памяти котлорое надо будет потом не забыть освободить!
hasherfrog
28-06-2004, 14:56
rodman
Пример, написанный сходу. Больше похоже на С, нежели на с++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char IN[]="aa bb cc dd";
char **OUT=NULL;
char *p=IN;
char *pszn = NULL;
int n=0;
while (pszn = strsep(&p, " "))
{
OUT=(char**)realloc(OUT, sizeof(char*)*(n+2));
if (!OUT) { perror("realloc"); return -1; }
OUT[n]=pszn;
n++;
}
OUT[n]=NULL;
for (n=0, p=OUT[0]; p=OUT[n]; n++)
printf("%s\n", p);
...
//не забудьте освободить OUT
free(OUT);
return 0;
}
на C++: :up:
#include <sstream>
#include <string>
using namespace std;
...
string input1 = "aa bb cc dd12 eefg";
stringstream oss(input1);
string s1, s2, s3, s4, s5;
oss >> s1 >> s2 >> s3 >> s4 >> s5;
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
cout << s4 << endl;
cout << s5 << endl;
на экране выдаст твои слова, каждое в новой строке.
Добавлено:
как тут "код" пишется?
Исправлено: hasherfrog, 9:03 1-07-2004
hasherfrog
30-06-2004, 13:04
pva тэг {{code}} {{/code}}
Добавлено:
pva
Проблема в том, что число слов у Вас заранее известно. У rodman известна длина IN, а не число слов.
Спасибо * hasherfrog * и * pva * !
я просто переносил программу с Бейсика на С++ соблазнившись легкостью создания GUI в Builder'e. поэтому не смейтесь, но народилось вот что:
String StrIN = RichEdit1->Text;
String Buf[128];
unsigned short k = 1;
for (unsigned short i = 1; i <128; i++){
*Buf[i] = MidStr(StrIN, k, 2);
*k = k + 3;/// не полностью сформулировал условия (длина элементов Buf тоже была известна-Sorry:-)))
........
Еще раз спасибо за ответы - пригодятся.
hasherfrog
01-07-2004, 09:08
rodman
>> длина элементов Buf тоже была известна
Нууу, тогда это совсем по-другому надо было делать... Поточнее будьте в следующий раз.
На счёт кол-ва слов:
string st;
while(oss>>st)
{
// do something with st
cout << st;
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC