鱼C论坛

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

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

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

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

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

x
本帖最后由 A529231559 于 2020-2-27 18:04 编辑
  1. #include<iostream>
  2. #include<string>
  3. #include<fstream>
  4. #include <sstream>  
  5. void write_data(char* fname, string* data2) {
  6.         ifstream iff2;
  7.         char data1[60];
  8.         char data_111[60];
  9.         iff2.open(fname);
  10.         int i = 0;
  11.         while (!iff2.getline(data1, 60).fail())
  12.         {
  13.                 data2 = data1;
  14.                 getline(data_111, data2, ',');
  15.                 i++;
  16.         }
复制代码

[i]

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

cin不是从键盘读取吗。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 17:58:35 | 显示全部楼层
请用代码格式发代码,不然会认为是斜体
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:00:01 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

使用道具 举报

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

cin不是从键盘读取吗。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

只能是通过cin输入吗?
那有其他方法吗:把从txt文件里面读取的一行字符串,然后通过逗号将他们分隔
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 18:10:51 | 显示全部楼层
是一个字符一个吗?
比如q,i,u,y,o,u,z,h,i
小甲鱼最新课程 -> https://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
这种格式的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

emmmm
那我就没什么办法了
要是一个一个的还有思路
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-27 23:24:28 | 显示全部楼层
while (!iff2.getline(data1, 60).fail())
改为while(iff2>>data)就可以从文件流中读取到了
小甲鱼最新课程 -> https://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了。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  4. int main() {
  5.         string a;
  6.         string b;
  7.         string c;
  8.         string d;
  9.         string h;
  10.         int e;
  11.         int f;
  12.         int g;
  13.         a = "折扣价发送,asdfassd,432,123";
  14.         e = a.find(",");
  15.         f = a.find( ",",e+1);
  16.         g = a.find(",", f + 1);
  17.         cout << "第一个逗号的位置:"<<e << endl;
  18.         cout << "第二个逗号的位置:"<<f << endl;
  19.         cout << "第三个逗号的位置:"<<g << endl;
  20.         b = a.substr(0,e);
  21.         c = a.substr(e+1, f-e-1);
  22.         d = a.substr(f+1, g-f-1);
  23.         h = a.substr(g+1);
  24.         cout << b << endl;
  25.         cout << c << endl;
  26.         cout << d << endl;
  27.         cout << h << endl;
  28. }


复制代码

自己给自己想了一个办法去读取这个数据了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 05:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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