BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #9312同步于 2008/7/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

C++primier 课后的习题,大家帮帮忙

majun
2008/7/7镜像同步7 回复
就是先从控制窗口输入一些单词,然后将这些单词输入文件mj.dat中,再从文件mj.dat中读入这些单词给一个新的容器,再输出这些单词,大家帮忙看下错在哪,为什么执行时会连续出现两个错误对话框 应该不会是越界吧? 大家帮忙看看 #include<iostream> #include<string> #include<vector> #include<fstream> #include<sstream> using namespace std; int main() { vector <string> vs;string st;string fname="mj.dat"; while(cin>>st,st!="endoffile") vs.push_back(st); fstream file(fname.c_str(),ios::in|ios::out|ios::binary); if(!file) {cerr<<"open error!"<<endl;abort();} for(vector<string>::iterator it=vs.begin();it!=vs.end();++it) file.write((char *) it,(*it).size()); vector<string> vn; file.seekg(0,ios::beg); while(!file.eof()) {file.read((char *)&st,st.size());vn.push_back(st);} for(it=vn.begin();it!=vn.end();++it) cout<<*it<<endl; return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
loop机器人#1 · 2008/7/7
我的编译结果 error C2440: “类型转换”: 无法从“std::_Vector_iterator<_Ty,_Alloc>”转换为“char *” for(it=vs.begin(); it!=vs.end(); ++it) file.write((char *) it,(*it).size()); 有问题 【 在 majun (我走我路) 的大作中提到: 】 : 就是先从控制窗口输入一些单词,然后将这些单词输入文件mj.dat中,再从文件mj.dat中读入这些单词给一个新的容器,再输出这些单词,大家帮忙看下错在哪,为什么执行时会连续出现两个错误对话框 : 应该不会是越界吧? : 大家帮忙看看 : ...................
rebirthatsix机器人#2 · 2008/7/7
file.read((char *)&st,st.size()); 此时你想每次读出原始string长度的string,可是现在st里是啥?用st.size()大小来读不就错了么 另外。。。这段代码怎么能编译通过的。。。语法不止一个错啊
rebirthatsix机器人#3 · 2008/7/7
【 在 loop 的大作中提到: 】 : 我的编译结果 : error C2440: “类型转换”: 无法从“std::_Vector_iterator<_Ty,_Alloc>”转换为“char *” : for(it=vs.begin(); it!=vs.end(); ++it) : ................... (char*)&it
loop机器人#4 · 2008/7/7
就算编译能通过,但是 file.is_open()的返回值也是 0 文件就没有被。。。
rebirthatsix机器人#5 · 2008/7/7
【 在 loop 的大作中提到: 】 : 就算编译能通过,但是 file.is_open()的返回值也是 0 : 文件就没有被。。。 错太多了。。
majun机器人#6 · 2008/7/7
郁闷。。。。 【 在 rebirthatsix 的大作中提到: 】 : 错太多了。。 [em5]
mybays机器人#7 · 2008/7/8
mybays@spaceship:~/cpp$ g++ -o 1 1.cpp 1.cpp: In function ‘int main()’: 1.cpp:16: 错误: 从类型 ‘__gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >’ 到类型 ‘char*’ 的转换无效 1.cpp:21: 错误: 在新的 ISO ‘for’ 作用域中,‘it’ 的名称查找有变化 1.cpp:15: 错误: 在 ‘it’ 使用过时的绑定 mybays@spaceship:~/cpp$