xjgcyq1
xjgcyq1
采纳率100%
2017-06-05 14:15

c语言的转换改成在c++,要怎样改,求代码

50
已采纳

#include
#include
int main()
{
int g[1000];//开一个足够大的数组。
int i99 = 0;
int na;
FILE *fp;//文件指针
fp = fopen("d:\a.txt", "r");//以文本方式打开文件。
if(fp == NULL) //打开文件出错。
return -1;
while(fscanf(fp, "%d,", &g[i99]) != EOF) //读取数据到数组,直到文件结尾(返回EOF)
i99++;
fclose(fp);//关闭文件
for( na= 0;na < i99; na ++)//循环输出数组元素。
{
printf("%d ", g[na]);
}
printf("\n");
printf("na=%d\n ", na);
return 0;
}

a.txt
16,12,13,15,14,
17,12,12,13,14,
18,12,13,1,1,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • fight_in_dl 战在春秋 4年前

    并不是特别简单,**难点在于数据文件中各数之间有逗号**。

    代码如下:

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <vector>
    using namespace std;
    
    void readCSV(istream &input, vector< vector<string> > &output)
    {
        string csvLine;
    
        //逐行读取数据文件
        while (getline(input, csvLine))
        {
            istringstream csvStream(csvLine);
            vector<string> csvColumn;
            string csvElement;
    
            //以逗号作为分隔符处理每行
            while (getline(csvStream, csvElement, ','))
            {
                csvColumn.push_back(csvElement);
            }
            output.push_back(csvColumn); 
        }
    }
    
    int main()
    {
        ofstream myfile;
        int a;
        fstream file("d://a.txt", ios::in);
        if (!file.is_open())
        {
            cout << "File not found!\n";
            return 1;
        }
        // 使用typedef简化写法
        typedef vector< vector<string> > csvVector;
        csvVector csvData;
    
        readCSV(file, csvData);
    
        // 打印结果
        for (csvVector::iterator i = csvData.begin(); i != csvData.end(); ++i)
        {
            for (vector<string>::iterator j = i->begin(); j != i->end(); ++j)
            {
                a = stoi(*j); //转换为整数
                cout << a << " ";
            }
            cout << "\n";
        }
    }
    

    说明:
    1 从头文件到函数,都是标准C++库 (std)的内容,涵盖了C++基本的文件操作、输入输出,向量容器等知识点,
    不论是完成作业还是自学,都是比较好的例子。
    2 程序上机测试通过,其结果如下,输出的格式您可以根据需要调整。

    图片说明

    用心回答每个问题,如果有帮助,请采纳答案好吗,谢谢~~~

    点赞 评论 复制链接分享
  • xjgcyq1 xjgcyq1 4年前

    菜鸟自学,为什么楼上的二个源码都不能正常运行出错, 是在codeblocks

    点赞 评论 复制链接分享
  • u010983763 KFPA 4年前

    c++完全兼容c,不用做任何修改就可以编译使用!

    点赞 评论 复制链接分享
  • coder_lj 凝视深空 4年前
     #include<iostream>
    #include <fstream>
    using namespace std;
    
    
    int main()
    {
    int g[1000];//开一个足够大的数组。
    int i99 = 0;
    int na;
    ifstream file;
    file.open("a.txt");
    if(file.fail()) //打开文件出错
    {
    file.close();
    return -1;
    }
    do
    {
        file>>g[i99];
        i99++;
    }while(!file.eof());
    file.close();//关闭文件
    for( na= 0;na < i99; na ++)//循环输出数组元素。
    {
    cout << g[na] << " ";
    }
    cout << endl;
    cout << na <<endl;
    return 0;
    }
    
    点赞 评论 复制链接分享
  • guwuchangtian 一个纸杯 4年前

    你要问的是不是说将文件操作改为c++风格的,可以参考博文链接,c++文件操作是以流的形式进行的,如果习惯了使用c的文件操作,建议保持。

    点赞 评论 复制链接分享
  • sunshine_of_morning 清晨丶的阳光 4年前

    C++全面兼容C语言,不修改也可以编译并运行。不过习惯把来自于C语言的头文件修改成C++风格,比如stdio.h写成cstdio,math.h写成cmath

    点赞 评论 复制链接分享