انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: خطای string  (دفعات بازدید: 3244 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین tahere

  • Newbie
  • *
  • ارسال: 12
  • جنسیت : دختر
خطای string
« : 31 امرداد 1392، 01:46 ق‌ظ »
با سلام
یه تابع با زبان c++ نوشتم که  string رو توش includ کردم میخوام با ترمینال ران کنم این دستو رو میزنم
  :  gcc -o a $(mysql_config --cflags) a.cpp $(mysql_config --libs)
 
 ولی توابعش رو نمیشناسه !!!این خطا رو میده
string’ was not declared in this scope
error: request for member ‘resize’ in ‘s’, which is of non-class type ‘char*’

چطور باید ران کنم؟؟

ممنون میشم اگه حل بشه


آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : خطای string
« پاسخ #1 : 31 امرداد 1392، 03:38 ق‌ظ »
ابتدا بهتر هست که برای برنامه‌های ++C بجای gcc از ++g استفاده کنید.

احتمالا namespace برنامتون رو std مشخص نکردید و string رو بدون استفاده از namespace اون بکار بردید.
در چنین مواقعی بهتر هست که کد برنامه هم ضمیمه کنید که راحت‌تر بشه کمکتون کرد.

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : خطای string
« پاسخ #2 : 31 امرداد 1392، 07:07 ق‌ظ »
پیش از main :
#include <string>
using namespace std;

آفلاین khadije

  • Newbie
  • *
  • ارسال: 1
  • جنسیت : دختر
پاسخ : خطای string
« پاسخ #3 : 31 امرداد 1392، 11:22 ق‌ظ »
دستوراتی رو که گفتین رو هم اجرا کردم ولی باز هم خطا داد!در ضمن string .hرو میشناسه ولی string رو نه!!؟
این هم کد برنامه اس:
#include <my_global.h>
#include <mysql.h>
#include <openssl/md5.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main(int argc, char **argv)
{

  MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields;
  int i;
  string url="http://www.google.com/url?sa=t&rct=j&q=/source=web&cd=1&cad=/rja&ved=0CCkQFjAA&url=http://uploadpa.com";
   string result=myhash(url);
   int s=search(result);
   while(!s)
   {
      //search again
      url=spilit(url);
      myhash(url);
      s=search(result);
   }
   if(s)
   {
      //decisition
   }
   
  conn = mysql_init(NULL);
  if(mysql_real_connect(conn, "localhost", "root", "*", "filtering", 0, NULL, 0))
   printf("\nsucsess\n");
  mysql_query(conn, "INSERT INTO `filtering`.`urllist` (`id` ,`url` ,`category`)VALUES (NULL , 'www.google.com', 'social')");
  mysql_query(conn, "SELECT * FROM urllist");
  result = mysql_store_result(conn);

  num_fields = mysql_num_fields(result);

  while ((row = mysql_fetch_row(result)))
  {
      for(i = 0; i < num_fields; i++)
      {
          printf("%s ", row ? row : "NULL");
      }
      printf("\n");
  }

     mysql_free_result(result);
     mysql_close(conn);

   return 0;
}

string myhash(string s)
{
   unsigned string digest[16];
   const string str="www.google.com";
   printf("str length:%d\n",strlen(str));
   MD5_CTX ctx;
   MD5_Init(&ctx);
   MD5_Update(&ctx,str,strlen(str));
   MD5_Final(digest, &ctx);
   string mdString[33];
   for(int i=0;i<16;i++)
      sprintf(&mdString[i*2],"%02x",(unsigned int)digest);
   printf("md5 digest:%s\n",mdString);
   return s;
}

int search(string h)
{
   return 1;
}

string spilit(string s[])
{
   bool flag=1;
   int index;
   while (flag)
   {
      index=s1.find("/");
      if (s[index-1]=='/')
      {
         flag=1;
      }
      else
         flag=0;
      s.resize(index);
         //cout<<"\n\n********   "<<s[index-1]<<"\n\n";
   }
   index=s.rfind("/");
   s.resize(index);
   return s;
}
واین هم خطاهایی که میده:
a.cpp: In function ‘int main(int, char**)’:
a.cpp:20:3: error: ‘string’ was not declared in this scope
a.cpp:20:10: error: expected ‘;’ before ‘url’
a.cpp:21:9: error: expected ‘;’ before ‘result’
a.cpp:22:21: error: ‘search’ was not declared in this scope
a.cpp:26:3: error: ‘url’ was not declared in this scope
a.cpp:26:17: error: ‘spilit’ was not declared in this scope
a.cpp:27:13: error: ‘myhash’ was not declared in this scope
a.cpp: At global scope:
a.cpp:59:1: error: ‘string’ does not name a type
a.cpp:75:12: error: ‘string’ was not declared in this scope
a.cpp:76:1: error: expected ‘,’ or ‘;’ before ‘{’ token
a.cpp:80:1: error: ‘string’ does not name a type
khadijeh@khadijeh-Inspiron-N5110:~/Downloads$

آفلاین بی نام تا اطلاع ثانوی

  • Sr. Member
  • *
  • ارسال: 401
  • جنسیت : پسر
پاسخ : خطای string
« پاسخ #4 : 31 امرداد 1392، 11:48 ق‌ظ »
کدتون رو داخل تگ قرار بدید. اینجوری که نمیشه بررسیش کرد ???

آفلاین MHA152

  • High Hero Member
  • *
  • ارسال: 2745
  • جنسیت : پسر
  • من عاشق یونیکسی ها هستم
پاسخ : خطای string
« پاسخ #5 : 31 امرداد 1392، 11:49 ق‌ظ »
لطفا کد ها را در تگ کد قرار دهید.
آیا g++ را نصب کردید؟چه کدی برای کامپایل آن زدید؟
بهتون پیشنهاد می کنم به دنیای بزرگ شبه−یونیکس وارد بشید و از پیشرفت لذت ببرید
جیمیلم

آفلاین tahere

  • Newbie
  • *
  • ارسال: 12
  • جنسیت : دختر
پاسخ : خطای string
« پاسخ #6 : 31 امرداد 1392، 01:34 ب‌ظ »
#include <my_global.h>
#include <mysql.h>
#include <openssl/md5.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main(int argc, char **argv)
{

  MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num_fields;
  int i;
  string url="http://www.google.com/url?sa=t&rct=j&q=/source=web&cd=1&cad=/rja&ved=0CCkQFjAA&url=http://uploadpa.com";
string result=myhash(url);
int s=search(result);
while(!s)
{
//search again
url=spilit(url);
myhash(url);
s=search(result);
}
if(s)
{
//decisition
}

  conn = mysql_init(NULL);
  if(mysql_real_connect(conn, "localhost", "root", "1", "filtering", 0, NULL, 0))
printf("\nsucsess\n");
  mysql_query(conn, "INSERT INTO `filtering`.`urllist` (`id` ,`url` ,`category`)VALUES (NULL , 'www.google.com', 'social')");
  mysql_query(conn, "SELECT * FROM urllist");
  result = mysql_store_result(conn);

  num_fields = mysql_num_fields(result);

  while ((row = mysql_fetch_row(result)))
  {
      for(i = 0; i < num_fields; i++)
      {
          printf("%s ", row[i] ? row[i] : "NULL");
      }
      printf("\n");
  }

  mysql_free_result(result);
  mysql_close(conn);

return 0;
}

string myhash(string s)
{
unsigned string digest[16];
const string str="www.google.com";
printf("str length:%d\n",strlen(str));
MD5_CTX ctx;
MD5_Init(&ctx);
MD5_Update(&ctx,str,strlen(str));
MD5_Final(digest, &ctx);
string mdString[33];
for(int i=0;i<16;i++)
sprintf(&mdString[i*2],"%02x",(unsigned int)digest[i]);
printf("md5 digest:%s\n",mdString);
return s;
}

int search(string h)
{
return 1;
}

string spilit(string s[])
{
bool flag=1;
int index;
while (flag)
{
index=s1.find("/");
if (s[index-1]=='/')
{
flag=1;
}
else
flag=0;
s.resize(index);
//cout<<"\n\n******** "<<s[index-1]<<"\n\n";
}
index=s.rfind("/");
s.resize(index);
return s;
}
g++ رو هم نصب کردم و از این کد برای اجرا استفاده می کنم:g++ -o a $(mysql_config --cflags) a.cpp $(mysql_config --libs) -lcrypto
و خطاها:
a.cpp: In function ‘int main(int, char**)’:
a.cpp:20:3: error: ‘string’ was not declared in this scope
a.cpp:20:10: error: expected ‘;’ before ‘url’
a.cpp:21:9: error: expected ‘;’ before ‘result’
a.cpp:22:21: error: ‘search’ was not declared in this scope
a.cpp:26:3: error: ‘url’ was not declared in this scope
a.cpp:26:17: error: ‘spilit’ was not declared in this scope
a.cpp:27:13: error: ‘myhash’ was not declared in this scope
a.cpp: At global scope:
a.cpp:59:1: error: ‘string’ does not name a type
a.cpp:75:12: error: ‘string’ was not declared in this scope
a.cpp:76:1: error: expected ‘,’ or ‘;’ before ‘{’ token
a.cpp:80:1: error: ‘string’ does not name a type

آفلاین MHA152

  • High Hero Member
  • *
  • ارسال: 2745
  • جنسیت : پسر
  • من عاشق یونیکسی ها هستم
پاسخ : خطای string
« پاسخ #7 : 31 امرداد 1392، 03:04 ب‌ظ »
مطمئنید همه ی اینایی که فراخوانی کردید .h دارند؟آخه من بعضی هاشون را بدون .h استفاده می کردم و مشکلی هم نداشتم
بهتون پیشنهاد می کنم به دنیای بزرگ شبه−یونیکس وارد بشید و از پیشرفت لذت ببرید
جیمیلم

آفلاین tahere

  • Newbie
  • *
  • ارسال: 12
  • جنسیت : دختر
پاسخ : خطای string
« پاسخ #8 : 31 امرداد 1392، 03:30 ب‌ظ »
هم با h امتحان کردم هم بدون h .... ولی خطا میگیره:(

آفلاین مُحَمَّدْ

  • Full Member
  • *
  • ارسال: 217
  • جنسیت : پسر
پاسخ : خطای string
« پاسخ #9 : 31 امرداد 1392، 05:58 ب‌ظ »
اینجا یه چیزایی نوشته شاید موقع کامپایل بکارتون بیاد
http://gcc.gnu.org/onlinedocs/gcc-3.1.1/cpp/System-Headers.html#System%20Headers
بعضی از این header ها هم توی لینوکس به گمانم جور دیگه فراخوانی بشه ، به عنوان مثال بجای string.h از cstring رو استفاده می‌کنیم یا stdio.h رو cstdio
درسته که درست نیست ولی درست نیست که بگیم درسته.

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : خطای string
« پاسخ #10 : 01 شهریور 1392، 02:53 ق‌ظ »
سلام.
کدت رو از جایی کپی کردی؟
split فکر کنم مال ++C نیست و مال boost هست. (دوستان اگه کسی اطلاع دقیقی داره به من هم بگه). راستی اشتباه هم نوشتی.
تابع search هم از هدر algorithm است.
در ضمن اون هدرها رو اینطوری بنویس:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

using namespace std;

#include <my_global.h>
#include <mysql.h>
#include <openssl/md5.h>

string رو دوبار اضافه کردی.
برای استفاده از کلاس string نیاز به اضافه کردن cstring نیست. مثلا همون cstdio رو اضافه کنی و using namespace std رو بنویسی میشه از اون کلاس استفاده کرد. اون cstring یه سری توابع هست که میشه کلاس string رو پردازش کرد.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین tahere

  • Newbie
  • *
  • ارسال: 12
  • جنسیت : دختر
پاسخ : خطای string
« پاسخ #11 : 01 شهریور 1392، 10:40 ق‌ظ »
ممنون از دوستان حل شد :)

split هم تابعی که خودم اسمش رو گذاشتم مال c++  یا چیز دیگه ای نیست