+ -
当前位置:首页 → 问答吧 → 我想用vector来录入数据vector问题

我想用vector来录入数据vector问题

时间:2011-11-28

来源:互联网

从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。$ a5 H/ l* |) R& A8 {( _3 N; B
我想用vector来录入数据. w& K/ _8 [0 W( b
复制内容到剪贴板
代码:
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
using namespace std;
void main()
{
string word;
cout<<"请输入一串字符(如果结束了请按ctrl+z):"<<endl;
vector<string> text;
while(cin>>word)
{

text.push_back(word);
}
ofstream fout("test.txt");
for(int i=0;i<text.size();i++)
fout<<text;
fout<<endl;
for(i=0;i<text.size();i++)
text=text-32;                 //这里有问题
for(i=0;i<text.size();i++)
fout<<text;
fout.close();
}7y

1 k+ C& w) D9 ?上面的程序有点问题,9 ]  u% B' R/ k$ k* f+ A
是不是需要对 '+'  进行运算符重载啊?, e1 ?! E7 x, ~) D# {6 S- Q- d
如果是,那么该如何重载呢?

作者: Tyrante   发布时间: 2011-11-28

复制内容到剪贴板
代码:
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
using namespace std;
void main()
{
        string word;
        cout<<"请输入一串字符(如果结束了请按ctrl+z):"<<endl;
        vector<string> text;
        while(cin>>word)
        {

                text.push_back(word);
        }
        cin.clear();
        ofstream fout("test.txt");
        int i,j;
        for( i=0;i<text.size();i++)
                fout<<text[i]<<' ';
        fout<<endl;
        for(i=0;i<text.size();i++)
        {
                for(j=0;j<(text[i]).size();j++)
                {
                        (text[i])[j]=toupper((text[i])[j]);//你怎么能直接对字符串处理呢
                }
        }
        for(i=0;i<text.size();i++)
                fout<<text[i]<<' ';
        fout.close();
}

作者: 月夜幻影   发布时间: 2011-11-28

应该首先将你的字符串中的所有大写改为小写之后,才往磁盘写文件.
3 E& r) S8 C3 }% J改小写的方法是遍历每个字符串,遇到大写字母就改小

作者: Bill_Hoo   发布时间: 2011-11-28

还有比较简便点的方法,用algorithm中的transform来实现
复制内容到剪贴板
代码:
#include <algorithm>
using namespace std;

int main(int argc, char **argv)
{
     .....
     while(cin>>word)
      {
          transform(word.begin(), word.end(), word.begin(), toupper);
          text.push_back(word);
      }
      .......
      return 0;
}

作者: 紫色枫叶   发布时间: 2011-11-28