By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,907 Members | 1,283 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,907 IT Pros & Developers. It's quick & easy.

Help in STRING compare ?

P: n/a
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[i]==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[i].c_str());
56 cout <<"HERE it is" <<" "<< ret[i] << endl;
57 }
58 return data;
59 }
60

Nov 7 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
tv****@hotmail.com wrote:
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[i]==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[i].c_str());
56 cout <<"HERE it is" <<" "<< ret[i] << endl;
57 }
58 return data;
59 }
60

Best

Kai-Uwe Bux
Nov 7 '05 #2

P: n/a
On Mon, 07 Nov 2005 11:37:51 -0800, tvn007 wrote:
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[i]==separator))
You're trying to compare a char (fw_answer[i]) 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[i].c_str());
56 cout <<"HERE it is" <<" "<< ret[i] << endl;
57 }
58 return data;
59 }
60


V
Nov 7 '05 #3

P: n/a
Thanks all for the help !

Nov 7 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.