| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:程序有问题么?
只看楼主 加入收藏
jack333fly
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-7-15
结帖率:83.33%
收藏
 问题点数:0 回复次数:8 
程序有问题么?
#include <fstream>
using namespace std;
int main()
{
    ifstream in_stream;
    ofstream out_stream;
    in_stream.open("1.txt");
    out_stream.open("2.txt");
    int first, second;
    in_stream >> first >> second;
    out_stream <<"The sum of these two numbers is:\n"
               << (first + second) << endl;
    in_stream.close();
    out_stream.close();
    return 0;
}
电脑桌面放着1.tet和2.txt,前者有数字1和2,后者是空的,但执行程序后没见2.texyou变化,不知是和情况,望高手指点~
搜索更多相关主题的帖子: include second 
2010-07-19 13:56
rainbow1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:277
专家分:839
注 册:2010-5-19
收藏
得分:0 
没有运行你的程序。但两个文件放在桌面路径不一定正确。你的程序保存在什么地方,你的文件应该放在什么地方。
2010-07-19 14:42
jack333fly
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2010-7-15
收藏
得分:0 
回复 2楼 rainbow1
哦~那程序的保存地方和文件的有关系么?具体是怎样的关系啊?
2010-07-19 15:10
rainbow1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:277
专家分:839
注 册:2010-5-19
收藏
得分:0 
一般在你程序当中不指定要打开文件的路径时,只会在你程序所在的目录下寻找要打开的文件。除非你在程序当中加上要打开文件所在路径。为了省事,你把文件放在你程序所在的目录下就行了。
2010-07-19 18:26
飞天小丰
Rank: 2
等 级:论坛游民
帖 子:19
专家分:50
注 册:2010-7-16
收藏
得分:0 
1.txt与2.txt位置可能放错了 他们应该放在你程序的目录文件夹下
2010-07-20 19:26
JINyuanbao
Rank: 2
等 级:论坛游民
帖 子:9
专家分:13
注 册:2010-7-20
收藏
得分:0 
回复 楼主 jack333fly
你这样操作的后果是:在当前的工作目录下会得到一个文档2.txt
内容如下:
The sum of these two numbers is:
-1717986920

很大的负数是因为你没有给first 和second 两个变量初始化 。
并且没有读取到1.txt的数据赋值给变量。

你想做这样的操作的话。这里我贴出了一段代码以供参考:不足之处还请批评指教      
假设你1.txt的内容是
43 435

#include <fstream>
#include <string>

using namespace std;
int main()
{
    ifstream in("1.txt");      //文件必须存在
    string strLine;
    int first, second;
    while(getline(in,strLine))
    {   
        int lineLength = strLine.length();
        int j=0;
        string test[2];
        for(int i=0; i<lineLength; i++)
        {
            if(strLine[i]!=' ')
            {
                test[j] += strLine[i];

            }
            else
            {
                j ++;
            }
        }   
        first  = atoi(test[0].c_str());
        second = atoi(test[1].c_str());
    }

    ofstream out("2.txt");   //在没有文件的情况下会在当前目录下创建此文件
   
    out<<"The sum of these two numbers is:\n"
               << (first + second) << endl;

    return 0;
}
通过这段代码操作
2.txt内容如下
The sum of these two numbers is:
478

注意:我的是在vs2008下编译通过。

补充说明:如果你读取的是多行数据,你可以用数组或者stl来存取数据。这里就不展开了
就像如下数据的txt文件
N9.7,0.0,0.0    #    248,248,248
6.0GY,9.7,1.5    #    248,248,232
5.1GY,9.7,2.4    #    248,248,216
4.0GY,9.6,3.4    #    248,248,200
3.3GY,9.6,4.4    #    248,248,184
2.9GY,9.6,5.4    #    248,248,168
2.6GY,9.6,6.4    #    248,248,152
2.3GY,9.5,7.4    #    248,248,136
2.2GY,9.5,8.4    #    248,248,120
2.0GY,9.5,9.3    #    248,248,104
1.9GY,9.5,10.2    #    248,248,88
。。。。
2010-07-20 23:15
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
IO的注意事項一般都比较多。C++ 我很久不用了,而且好多东西也没学会,呵呵~~以下仅是一些建议。

有一些简单的问题可以避免的,比如打开流之后,一般可以用 is_open() 这个函数来查看流是否正确打开了。
比如像你这个,可以 in_stream.is_open() 来试一下,它返回 false,就是说那个流根本没打开。

没有必要用楼上的那个方法读数字,用流的话,一般就 int a; in >> a; 这样就行了。
如果担心输入文件有語法或格式上的问题。可以在读取之后测 goodbit 看是不是成功读取了。

总之有关IO方面是一个主题,相关的东西如果大量的不懂可以找书系统学,如果有小地方不会可以上网查一些细节。
2010-07-21 01:26
windyfzz
Rank: 2
等 级:禁止访问
帖 子:90
专家分:12
注 册:2010-7-25
收藏
得分:0 
你可以设置路径,比如把1.txt,2.txt放在d盘。
则改为
    in_stream.open("d:\\1.txt");
    out_stream.open("d:\\2.txt");
如不设路径则必须保证1.txt,2.txt在当前目录下。
2010-07-25 22:45
saynotolx
Rank: 2
等 级:论坛游民
帖 子:11
专家分:13
注 册:2010-7-26
收藏
得分:0 
顶顶顶顶顶!
2010-07-26 17:23
快速回复:程序有问题么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023910 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved