关于C++的文件操作和getline()的问题?

各位可以帮我看一下这段代码有没有错误(刚刚接触C++的文件操作,可能错误不止一点点):

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    ifstream in("abc.txt");
    for(string str,getline(in,str);){
        //(具体操作);
    }
    return 0;
}

为什么总在getline那行代码报错呢?abc.txt文件和源代码在同级目录中。

c++

2个回答

额,没见过你这种写法呢 ,如果是伪代码的话,应该是没找到文件 ,不过具你说应该不可能,那么文件中有数据么?没数据会直接退出循环

另外附一个通常的写法

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    ifstream in( "abc.txt" );
    string str;
    while ( getline( in, str ) )
    {
        cout << str << endl;
    }
    return 0;
}


图片说明

d2262272d
潇潇-易水 回复刚会码程序的咸鱼: 对了,看你应该是菜鸟,就对说一句for循环一般格式为for ( ;; ) // 这个就等于while(true)
6 个月之前 回复
d2262272d
潇潇-易水 回复刚会码程序的咸鱼: 写到是可以写,你写成for ( string str; getline( in, str ); )也是可以的,但是一般没有这么做事的,首先一个就是不利于书写并且不好读懂,我打个比方吧,比如你做题,题的答案5*100=500 就可以了,但是你要写5+5+5+...+5=500,也不能说你错,但是你这个整法....
6 个月之前 回复
weixin_43812804
玉斝 谢谢,按你这个写法很快就写好了。但是文件里面是有内容的,所以我这种写法为什么 不对呢?
6 个月之前 回复

你的程序根本不能编译吧

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    ifstream in("abc.txt");
    string str;
    for(;getline(in,str);){
        //(具体操作);
    }
    return 0;
}

abc.txt文件和源代码在同级目录中
这个不行,你不带路径只有文件名,如果是vc++,默认是vs启动的路径,也就是exe所在的路径。
你最好是用完整路径试试看

weixin_43812804
玉斝 明白了,非常感谢
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!