鱼C论坛

 找回密码
 立即注册
查看: 1521|回复: 12

[已解决]新手求助,getline函数的问题

[复制链接]
发表于 2020-2-27 17:50:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 A529231559 于 2020-2-27 18:04 编辑
#include<iostream>
#include<string>
#include<fstream>
#include <sstream>  
void write_data(char* fname, string* data2) {
        ifstream iff2;
        char data1[60];
        char data_111[60];
        iff2.open(fname);
        int i = 0;
        while (!iff2.getline(data1, 60).fail())
        {
                data2 = data1;
                getline(data_111, data2, ',');
                i++;
        }
[i]

为什么geiline会报错的,我看其他人的getline的是有这个功能啊。
我用的是visual studio2019
我的目的是将接收的字符串(里面有逗号)通过逗号分隔,分别赋值。
[/i]
最佳答案
2020-2-27 18:07:15
A529231559 发表于 2020-2-27 18:06
和我的情况不太一样啊,我就问下这个输入流不是cin不行吗?我现在设置的输入流是读取了txt文件的一行

cin不是从键盘读取吗。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 17:58:35 | 显示全部楼层
请用代码格式发代码,不然会认为是斜体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:00:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 18:06:24 | 显示全部楼层
本帖最后由 A529231559 于 2020-2-27 18:07 编辑


和我的情况不太一样啊,我就问下这个输入流不是cin不行吗?我现在设置的输入流是读取了txt文件的一行
或者说我把我从txt里面读取的字符串通过逗号分隔需要怎么处理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:07:15 | 显示全部楼层    本楼为最佳答案   
A529231559 发表于 2020-2-27 18:06
和我的情况不太一样啊,我就问下这个输入流不是cin不行吗?我现在设置的输入流是读取了txt文件的一行

cin不是从键盘读取吗。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 18:09:08 | 显示全部楼层
qiuyouzhi 发表于 2020-2-27 18:07
cin不是从键盘读取吗。。。

只能是通过cin输入吗?
那有其他方法吗:把从txt文件里面读取的一行字符串,然后通过逗号将他们分隔
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:10:51 | 显示全部楼层
是一个字符一个吗?
比如q,i,u,y,o,u,z,h,i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 18:12:42 | 显示全部楼层
qiuyouzhi 发表于 2020-2-27 18:10
是一个字符一个吗?
比如q,i,u,y,o,u,z,h,i

我的是这个啊啊啊,djqqc,429,221
这种格式的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:14:43 | 显示全部楼层
A529231559 发表于 2020-2-27 18:12
我的是这个啊啊啊,djqqc,429,221
这种格式的

emmmm
那我就没什么办法了
要是一个一个的还有思路
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 18:15:30 | 显示全部楼层
qiuyouzhi 发表于 2020-2-27 18:14
emmmm
那我就没什么办法了
要是一个一个的还有思路

好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 23:24:28 | 显示全部楼层
while (!iff2.getline(data1, 60).fail())
改为while(iff2>>data)就可以从文件流中读取到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 09:41:14 | 显示全部楼层
卖橘子的柚子 发表于 2020-2-27 23:24
while (!iff2.getline(data1, 60).fail())
改为while(iff2>>data)就可以从文件流中读取到了

读取是没有问题的。。。就是 这个getline貌似我搞错了。。。。。getline只能算是cin的一种,我现在是直接读取不算cin了。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-28 10:53:30 | 显示全部楼层
#include<iostream>
#include<string>
using namespace std;

int main() {
        string a;
        string b;
        string c;
        string d;
        string h;
        int e;
        int f;
        int g;
        a = "折扣价发送,asdfassd,432,123";
        e = a.find(",");
        f = a.find( ",",e+1);
        g = a.find(",", f + 1);
        cout << "第一个逗号的位置:"<<e << endl;
        cout << "第二个逗号的位置:"<<f << endl;
        cout << "第三个逗号的位置:"<<g << endl;
        b = a.substr(0,e);
        c = a.substr(e+1, f-e-1);
        d = a.substr(f+1, g-f-1);
        h = a.substr(g+1);
        cout << b << endl;
        cout << c << endl;
        cout << d << endl;
        cout << h << endl;
}
自己给自己想了一个办法去读取这个数据了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 22:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表