Allah razı olsu.. Eyvallah qardaş :)
Hər iki kodda bölünmə nəticəsində alınan alt sətirlərin ədədə çevrilməsi üçün atoi funksiyasından istifadə olunur. atoi funksiyası verilmiş sətri ədədə çevirərkən ilk simvolun üstəgəl və ya çıxma ola biləcəyini nəzərə alır. Ama sonrakı simvollar mütləq rəqəm olmalıdır. İlk qeyri rəqəm simvoluna qədər olan hissəsni ədədə çevirir.
[code]atio (-45aa) eliyir 45[/code]
Amma əgər ilk simvol rəqəm deyilsə onda atoi 0 nəticəsini qaytarır.
[code]atio (-aa45) eliyir 0[/code]
atoi funksiyası barədə daha ətraflı aşağıdakı keçiddən məlumat əldə edə bilərsiniz.
reqemler menfide ola biler onda düz işləyəcək ?.. Cavaba gore təşəkkür
Salam İnternetdə hazır bir kod tapdım buna görə:
[code]
#include iostream
#include string
#include vector
using namespace std;
vector explode(string inputstring, string delimiter){
vector explodes;
inputstring.append(delimiter);
while(inputstring.find(delimiter)!=string::npos){
explodes.push_back(inputstring.substr(0, inputstring.find(delimiter)));
inputstring.erase(inputstring.begin(), inputstring.begin()+inputstring.find(delimiter)+delimiter.size());
}
return explodes;
}
int main(){
string delimiter="Hello World Hello World2";
vector explodes=explode(delimiter, " ");
for (int i=0;i<(int)explodes.size();i++){
cout<<explodes[i]<<"\n";
}
return 0;
}
[/code]
https://www.daniweb.com/programming/software-development/code/440617/c-equivalent-for-phps-explode-function
salam sizə bu işi icra edən iki fərqli kod nümunəsi göndərirəm. birincisi elə string tipin özündən istifadə edib sətri hissələrə bölür. İkincisi isə əvvəlcə string tipli sətri c tipli sətrə çevirir və daha sonra emal edir. Qeyd edim ki hər iki halda yalnız sətir aradakı boşluq simvollarına görə hissələrə bölünür. alınan alt sətirlərin doğru ədəd olması yoxlanılmır. bunun üçün əlavə kod tərtib etməlisiniz.
Kod1:
[code]#include "stdafx.h"
#include
#include
#include
using namespace std;
int main()
{
string s("1 2 3 4 5");
istringstream iss(s);
int i, say, ededler[100];
say = 0;
do
{
string sub;
iss >> sub;
ededler[say] = atoi(sub.c_str());
say++;
} while (iss);
printf("setirdeki ededler\n");
for (i=0; i<say; ++i)
printf("%d ", ededler[i]);
}[/code]
Kod 2:
[code]// string.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
using namespace::std;
int main(){
string line = "1 2 3 4 5";
int i, say, ededler[100];
say = 0;
char *snumb;
char *cstr = new char[line.length() + 1];
strcpy(cstr, line.c_str());
snumb = strtok(cstr, " ");
while (snumb != NULL){
ededler[say] = atoi(snumb);
say++;
snumb = strtok(NULL, " ");
}
delete [] cstr;
printf("setirdeki ededler\n");
for (i=0; i<say; ++i)
printf("%d ", ededler[i]);
}
[/code]
[code]string line = “1 2 3 4 5”;[/code]