在linux下用GCC或G++编译如何作这个程序
以前都是用mfc编程,现在在red hat9下作一个程序,要求读取一个text文件,文件那输入的是一连串数字,用“,”分隔的,例如下面格式(数字是随机整数):
3,4,-19,79,-2,60
要求程序读取这个文件(文件名是“file.txt”)输出结果到屏幕上如下:
-19,-2,3,4,60,79。
谁知道怎么作啊,我用stl作能用G++编译么,有其他方法么,例如用纯C作怎么作,能否给出代码啊。
#include <...>
...
...
int main()
{
...
}
[解决办法]
g++的话很简单
#include <vector>
#include <iterator>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream f( "txt ");
int x;char t;
vector <int> b;
while(f> > x){
b.push_back( x);
f> > t;
}
sort( b.begin(),b.end() );
copy(b.begin(),b.end(),ostream_iterator <int> (cout, " "));
}
[解决办法]
好了
#include <iostream> //采用标准头文件格式
#include <string>
#include <map>
#include <fstream>
using namespace std;
bool ReadFile(char* cFileName, map <int,int> * AllReadMap) //bool
{
AllReadMap-> clear();
ifstream infile;
int nTempValue=0;
int nStringLenght = 0;
char cString[127]; //buffer
char cTempChar[10]; //一个整数的字符串
string strMyString = " ";
string strTempString = " ";
infile.open(cFileName, ios::in);
if (!infile)
{
return false; //false
}
while(!infile.eof() )
{
infile.getline(cString,127); //读取一行字符到缓冲区
strMyString = cString; //赋值给临时变量等待处理
nStringLenght = strMyString.length();//取长度
for(int i=0;i <nStringLenght; ++i)
{
//
int nCommaNumber = strMyString.find( ", ");memset(cTempChar, '\0 ',10);
strTempString = strncpy(cTempChar,strMyString.c_str(),nCommaNumber);
nTempValue = atoi(cTempChar);
string::iterator Pos;
Pos = strMyString.begin();
for(int j =0; j <nCommaNumber+1; ++j)
{
++Pos;
}
AllReadMap-> insert(std::make_pair(nTempValue,nTempValue));
strMyString.erase(strMyString.begin(),Pos);
}
}
infile.close();
return true; //true
}
int main()
{
//////////////////////small to big
map <int,int> ValueMap;
ReadFile( "myfile01.txt ",&ValueMap);
map <int,int> ::iterator Pos;
for(Pos=ValueMap.begin();Pos!=ValueMap.end();Pos++)
{
cout < < Pos-> first < < endl;
}
return 0;
}