input/output trouble cause segmentation fault
eric
fsshl at att.net
Wed Jul 13 06:00:19 UTC 2011
thanks your quick reply
but that's I tried
result is segmentation fault
which is not what book predict(or what program will follow)
as you can see, it should response another cout
"Enter some more strings: ";
but it never reach there.
that's what I need you(or any advanced c/g++/linux/ubuntu programers'
help.
On Wed, 2011-07-13 at 13:50 +0800, Ace wrote:
> Unlike Windows, GNU/Linux use ^D instead of ^Z .
>
> On 13 July 2011 13:48, eric <fsshl at att.net> wrote:
> Dear advanced c/g++ programers:
>
> A program request me to enter twice input
> that program probably is tested good on visual c++ 7.1 on
> window xp,
> but my system is g++ on linux(Ubuntu10.04)
> It assume
> Enter some strings: a b c d
> ^Z
> Enter some more strings: d e f g
> ^Z
> Union: a b c d e f g
> Difference: a b c
> Intersection: d
> all these you can get from page 273 and 274 of book(c++
> cookbook)
>
> but my test result is
> -------------------------------
> eric at eric-laptop:~/cppcookbook/ch7$ ./a.out
> Enter a series of strings: a b c d
> ^Z
> [7]+ Stopped ./a.out
> eric at eric-laptop:~/cppcookbook/ch7$ ./a.out
> Enter a series of strings: a b c d
> {a, b, c, d}
> Segmentation fault
> -------------------------------------------------------------------
> second case , I used <Enter><Control-D>
> first case, I used <Enter><Control-Z>
>
> the following is the program I tested, you still can download
> from
> http://examples.oreilly.com/9780596007614/
> ------------------------------------------------------------------------------------------------
> // Example 7-8. Unsing set operations
> #include <iostream>
> #include <algorithm>
> #include <string>
> #include <set>
> #include <iterator>
> #include "utils.h" // For parintContainer(): see 7.10
>
> using namespace std;
>
> int main() {
>
> cout << "Enter some strings: "
> istream_iterator<string> start(cin);
> istream_iterator<string> end;
> set<string> s1(start, end);
>
> cin.clear();
>
> cout << "Enter some more strings: ";
> set<string> s2(++start, end);
>
> set<string> setUnion;
> set<string> setInter;
> set<string> setDiff;
>
> set_union(s1.begin(), s1.end(),
> s2,begin(), s2.end(),
> inserter(setUnion, setUnion.begin()));
>
> set_difference(s1.begin(), s1.end(),
> s2.begin(), s2.end(),
> inserter(setDiff, setDiff.begin()));
>
> cout << "Union:\n";
> printContainer(setUnion);
> cout << "Difference:\n";
> printContainer(setDiff);
> cout << "Intersection:\n";
> printContainer(setinter);
> }
> --------------------------------------------------------------------------------------------------
> utils.h
> -------------------------------
> // Example 7-12. Writing your own printing function
> #include <iostream>
> #include <string>
> #include <algorithm>
> #include <iterator>
> #include <vector>
>
> using namespace std;
>
> template<typename C>
> void printContainer(const C& c, char delim = ',', ostream& out
> = cout)
> {
> printRange(c.begin(), c.end(), delim, out);
> }
>
> template<typename Fwd>
> void printRange(Fwd first, Fwd last, char delim = ',',
> ostream& out =
> cout) {
> out << "{";
> while (first != last) {
> out << *first;
> if (++first != last)
> out << delim << ' ';
> }
> out << "}" << endl;
> }
> ------------------------------------------------------------------------------------------------------------------
> Ned and thanks your help a lot in advance
> Eric
>
>
>
> --
> Ubuntu-devel-discuss mailing list
> Ubuntu-devel-discuss at lists.ubuntu.com
> Modify settings or unsubscribe at:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
>
>
>
> --
> ========================================================
> DaoKuan Ma (Ace)
> Software Group of CIPPUS-Center of Innovation & Practice.
>
>
> ADD: Software School of Dalian University of Technology.
> TEL: +86-186-0984-1079.
>
> BLOG: http://t.matong.me
> EMAIL: madaokuan at gmail.com goace at acm.org
> ------
> CONTACT ME:
>
More information about the Ubuntu-devel-discuss
mailing list