A529231559 发表于 2020-2-27 17:50:08

新手求助,getline函数的问题

本帖最后由 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;
      char data_111;
      iff2.open(fname);
      int i = 0;
      while (!iff2.getline(data1, 60).fail())
      {
                data2 = data1;
                getline(data_111, data2, ',');
                i++;
      }


为什么geiline会报错的,我看其他人的getline的是有这个功能啊。
我用的是visual studio2019
我的目的是将接收的字符串(里面有逗号)通过逗号分隔,分别赋值。

qiuyouzhi 发表于 2020-2-27 17:58:35

请用代码格式发代码,不然会认为是斜体

qiuyouzhi 发表于 2020-2-27 18:00:01

https://blog.csdn.net/duan19920101/article/details/50782816

A529231559 发表于 2020-2-27 18:06:24

本帖最后由 A529231559 于 2020-2-27 18:07 编辑

qiuyouzhi 发表于 2020-2-27 18:00
https://blog.csdn.net/duan19920101/article/details/50782816

和我的情况不太一样啊,我就问下这个输入流不是cin不行吗?我现在设置的输入流是读取了txt文件的一行
或者说我把我从txt里面读取的字符串通过逗号分隔需要怎么处理

qiuyouzhi 发表于 2020-2-27 18:07:15

A529231559 发表于 2020-2-27 18:06
和我的情况不太一样啊,我就问下这个输入流不是cin不行吗?我现在设置的输入流是读取了txt文件的一行

cin不是从键盘读取吗。。。

A529231559 发表于 2020-2-27 18:09:08

qiuyouzhi 发表于 2020-2-27 18:07
cin不是从键盘读取吗。。。

只能是通过cin输入吗?{:5_104:}
那有其他方法吗:把从txt文件里面读取的一行字符串,然后通过逗号将他们分隔

qiuyouzhi 发表于 2020-2-27 18:10:51

是一个字符一个吗?
比如q,i,u,y,o,u,z,h,i

A529231559 发表于 2020-2-27 18:12:42

qiuyouzhi 发表于 2020-2-27 18:10
是一个字符一个吗?
比如q,i,u,y,o,u,z,h,i

我的是这个啊啊啊,djqqc,429,221
这种格式的

qiuyouzhi 发表于 2020-2-27 18:14:43

A529231559 发表于 2020-2-27 18:12
我的是这个啊啊啊,djqqc,429,221
这种格式的

emmmm
那我就没什么办法了
要是一个一个的还有思路

A529231559 发表于 2020-2-27 18:15:30

qiuyouzhi 发表于 2020-2-27 18:14
emmmm
那我就没什么办法了
要是一个一个的还有思路

{:5_104:}好吧

卖橘子的柚子 发表于 2020-2-27 23:24:28

while (!iff2.getline(data1, 60).fail())
改为while(iff2>>data)就可以从文件流中读取到了

A529231559 发表于 2020-2-28 09:41:14

卖橘子的柚子 发表于 2020-2-27 23:24
while (!iff2.getline(data1, 60).fail())
改为while(iff2>>data)就可以从文件流中读取到了

读取是没有问题的。。。就是 这个getline貌似我搞错了。。。。。getline只能算是cin的一种,我现在是直接读取不算cin了。。。。

A529231559 发表于 2020-2-28 10:53:30

A529231559 发表于 2020-2-27 18:15
好吧

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



自己给自己想了一个办法去读取这个数据了{:5_108:}
页: [1]
查看完整版本: 新手求助,getline函数的问题