emadfa
جمعه 18 تیر 1389, 21:01 عصر
ابتدا سوالم را می پرسم و سپس کد خودم رو می زارم ببینید.
در قسمتی از برنامم یک رشته ساختم از نوع string که می تونه شامل صدها کلمه باشه! ( چون این رشته اطلاعات یک فایله! ) حالا نیاز دارم که تعداد کلمات این رشته را در یک عدد و همه کلمات این رشته رو در یک اشاره گر رشته ذخیره کنم. ( چون تعداد کلمات معلوم نیست. ) فرض می کنیم ملاک تشخیص هر کلمه فقط یک Space باشه. حالا می مخوام با تشخیص هر Space حروق قبل از این Space تا Space قبلی در قسمتی از اشاره گر ذخیره بشه. با این کار همه کلمات یک متن رو جدا کرده و در یک اشاره گر ذخیره کرده و می تونم به اون ها دسترسی داشته باشم. برای فهمیدن تعداد کلمات هم الگوریتم رو نوشتم. البته برای ذخیره کردن خود کلمات چیزی که گفتم الگوریتم خودمه. اگه الگوریتم بهتری دارید لطفا بگید.
برنامه ای که نوشتم در هنگام اجرا crash میشه که دلیلش تابع CountWord هست. این برنامه رو با کامپایلر Qt نوشتم. لطفا کمکم کنید.
فایل Process_Core.h
#ifndef PROCESS_CORE_H
#define PROCESS_CORE_H
#include <string>
using namespace std;
class Process_Core
{
public:
Process_Core(string);
string getString();
int CountWord();
private:
string myStr;
const char *Array;
int num;
string *nor;
string oneStr;
};
#endif // PROCESS_CORE_H
فایل Process_Core.cpp
#include "process_core.h"
Process_Core::Process_Core(string str)
{
myStr = str;
}
string Process_Core::getString()
{
return myStr;
}
int Process_Core::CountWord()
{
num = 0;
oneStr = "";
int m;
Array = myStr.c_str();
for(int i = 0 ; Array[i] ; i++)
{
if(Array[i] == ' ' && Array[i-1] != ' ')
{
num++;
if(num == 1)
m = i + 1;
else
{
int n = i - 1;
for(int j = m ; m <= n ; j++ )
oneStr += Array[j];
*nor = oneStr;
*nor++;
int m = i + 1;
}
}
}
num++;
return num;
}
در قسمتی از برنامم یک رشته ساختم از نوع string که می تونه شامل صدها کلمه باشه! ( چون این رشته اطلاعات یک فایله! ) حالا نیاز دارم که تعداد کلمات این رشته را در یک عدد و همه کلمات این رشته رو در یک اشاره گر رشته ذخیره کنم. ( چون تعداد کلمات معلوم نیست. ) فرض می کنیم ملاک تشخیص هر کلمه فقط یک Space باشه. حالا می مخوام با تشخیص هر Space حروق قبل از این Space تا Space قبلی در قسمتی از اشاره گر ذخیره بشه. با این کار همه کلمات یک متن رو جدا کرده و در یک اشاره گر ذخیره کرده و می تونم به اون ها دسترسی داشته باشم. برای فهمیدن تعداد کلمات هم الگوریتم رو نوشتم. البته برای ذخیره کردن خود کلمات چیزی که گفتم الگوریتم خودمه. اگه الگوریتم بهتری دارید لطفا بگید.
برنامه ای که نوشتم در هنگام اجرا crash میشه که دلیلش تابع CountWord هست. این برنامه رو با کامپایلر Qt نوشتم. لطفا کمکم کنید.
فایل Process_Core.h
#ifndef PROCESS_CORE_H
#define PROCESS_CORE_H
#include <string>
using namespace std;
class Process_Core
{
public:
Process_Core(string);
string getString();
int CountWord();
private:
string myStr;
const char *Array;
int num;
string *nor;
string oneStr;
};
#endif // PROCESS_CORE_H
فایل Process_Core.cpp
#include "process_core.h"
Process_Core::Process_Core(string str)
{
myStr = str;
}
string Process_Core::getString()
{
return myStr;
}
int Process_Core::CountWord()
{
num = 0;
oneStr = "";
int m;
Array = myStr.c_str();
for(int i = 0 ; Array[i] ; i++)
{
if(Array[i] == ' ' && Array[i-1] != ' ')
{
num++;
if(num == 1)
m = i + 1;
else
{
int n = i - 1;
for(int j = m ; m <= n ; j++ )
oneStr += Array[j];
*nor = oneStr;
*nor++;
int m = i + 1;
}
}
}
num++;
return num;
}