Help in STRING compare ?

T

tvn007

Please help, I am not sure why this code not even compile due to
line 39 and 44.
Thanks in advance for any help


1 #include <cctype>
2 #include <iostream>
3 #include <string>
4 #include <vector>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::getline;
10 using std::string;
11 using std::vector;
12
13 double split (const std::string&,int);
14
15 int main()
16 {
17 string s =("1.1,2.3,3.5,4.2");
18
19 const int loc = 3;
20 double results;
21
22 results= split(s,loc);
23 cout <<"RESULT IS"<<" "<< results<<endl;
24
25
26 return 0;
27 }
28
29
30 double split(const string& fw_answer,const int ok )
31 {
32 double data;
33 vector<string> ret;
34 const string separator (",");
35 typedef string::size_type string_size;
36 string_size i = 0;
37
38 while (i != fw_answer.size()) {
39 while (i != fw_answer.size() && (fw_answer==separator))
40 ++i;
41
42 string_size j = i;
43
44 while (j != fw_answer.size() && !(fw_answer[j]==separator))
45 ++j;
46
47 if (i != j) {
48 ret.push_back(fw_answer.substr(i, j - i));
49 i = j;
50 }
51
52 }
53 for (vector<string>::size_type i = 0; i != ret.size(); ++i)
54 if (i==ok){
55 data = atof(ret.c_str());
56 cout <<"HERE it is" <<" "<< ret << endl;
57 }
58 return data;
59 }
60
 
K

Kai-Uwe Bux

Please help, I am not sure why this code not even compile due to
line 39 and 44.
Thanks in advance for any help


1 #include <cctype>
2 #include <iostream>
3 #include <string>
4 #include <vector>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::getline;
10 using std::string;
11 using std::vector;
12
13 double split (const std::string&,int);
14
15 int main()
16 {
17 string s =("1.1,2.3,3.5,4.2");
18
19 const int loc = 3;
20 double results;
21
22 results= split(s,loc);
23 cout <<"RESULT IS"<<" "<< results<<endl;
24
25
26 return 0;
27 }
28
29
30 double split(const string& fw_answer,const int ok )
31 {
32 double data;
33 vector<string> ret;
34 const string separator (",");

Try:
char const separator = ',';

35 typedef string::size_type string_size;
36 string_size i = 0;
37
38 while (i != fw_answer.size()) {
39 while (i != fw_answer.size() && (fw_answer==separator))
40 ++i;
41
42 string_size j = i;
43
44 while (j != fw_answer.size() && !(fw_answer[j]==separator))
45 ++j;
46
47 if (i != j) {
48 ret.push_back(fw_answer.substr(i, j - i));
49 i = j;
50 }
51
52 }
53 for (vector<string>::size_type i = 0; i != ret.size(); ++i)
54 if (i==ok){
55 data = atof(ret.c_str());
56 cout <<"HERE it is" <<" "<< ret << endl;
57 }
58 return data;
59 }
60



Best

Kai-Uwe Bux
 
V

Victor Bazarov

Please help, I am not sure why this code not even compile due to
line 39 and 44.
Thanks in advance for any help


1 #include <cctype>

Consider, for all your posts after this one, dropping the line numbers and
simply commenting the lines you're talking about, like this;

if (blahbla) { // line # 42
2 #include <iostream>
3 #include <string>
4 #include <vector>
5
6 using std::cin;
7 using std::cout;
8 using std::endl;
9 using std::getline;
10 using std::string;
11 using std::vector;
12
13 double split (const std::string&,int);
14
15 int main()
16 {
17 string s =("1.1,2.3,3.5,4.2");
18
19 const int loc = 3;
20 double results;
21
22 results= split(s,loc);
23 cout <<"RESULT IS"<<" "<< results<<endl;
24
25
26 return 0;
27 }
28
29
30 double split(const string& fw_answer,const int ok )
31 {
32 double data;
33 vector<string> ret;
34 const string separator (",");

Why not simply
const char separator(',');

???
35 typedef string::size_type string_size;
36 string_size i = 0;
37
38 while (i != fw_answer.size()) {
39 while (i != fw_answer.size() && (fw_answer==separator))


You're trying to compare a char (fw_answer) to a string (separator).
As soon as you make 'separator' a plain 'char', your problem will be
solved.
40 ++i;
41
42 string_size j = i;
43
44 while (j != fw_answer.size() && !(fw_answer[j]==separator))

Same problem
45 ++j;
46
47 if (i != j) {
48 ret.push_back(fw_answer.substr(i, j - i));
49 i = j;
50 }
51
52 }
53 for (vector<string>::size_type i = 0; i != ret.size(); ++i)
54 if (i==ok){
55 data = atof(ret.c_str());
56 cout <<"HERE it is" <<" "<< ret << endl;
57 }
58 return data;
59 }
60


V
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top