在linux下用GCC或G++编译如何作这个程序

pan7861 2007-03-22 11:22:57
以前都是用mfc编程,现在在red hat9下作一个程序,要求读取一个text文件,文件那输入的是一连串数字,用“,”分隔的,例如下面格式(数字是随机整数):
3,4,-19,79,-2,60

要求程序读取这个文件(文件名是“file.txt”)输出结果到屏幕上如下:
-19,-2,3,4,60,79。
谁知道怎么作啊,我用stl作能用G++编译么,有其他方法么,例如用纯C作怎么作,能否给出代码啊。
#include <...>
...
...
int main()
{
...
}
...全文
220 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pan7861 2007-03-23
  • 打赏
  • 举报
回复
完全用C写不用map 等现成的东西
怎么做呢,要写算法的
pan7861 2007-03-23
  • 打赏
  • 举报
回复
啥也不说了,全在分里
hailongchang 2007-03-23
  • 打赏
  • 举报
回复
好了

#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;
}
pan7861 2007-03-23
  • 打赏
  • 举报
回复
帮我看看怎么编译后出现那么多错误呢

#include <iostream.h>
#include <string.h>
#include <map.h>
#include <fstream.h>

BOOL ReadFile(char* cFileName, map<int,int>* AllReadMap)
{
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;
}

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;
}

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;
}
hailongchang 2007-03-23
  • 打赏
  • 举报
回复
stl is inclueded in the C++ standard specification

  • 打赏
  • 举报
回复
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," "));
}
orc1984 2007-03-23
  • 打赏
  • 举报
回复
很簡單的呀 對於選擇什麼庫沒有關係的
WinWing 2007-03-22
  • 打赏
  • 举报
回复
不就是读文件,然后对结果排序吗??

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧