C++ 如何从string字符串中一行行读取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 如何从string字符串中一行行读取数据相关的知识,希望对你有一定的参考价值。

如: 有一个string字符串,里面放了几行数据,我如何
从中一行行的把数据读出来,每次读出一行。

你说的是读取文件吧?
如果是从文件中读取数据,一行一行的读取,用getline
#include <iostream>
fstream in;
CString strFileName = "E:\\测试\\a.txt"; //路径是双斜杠
in.open(strFileName,ios::in); //ios_base::in
while( !in.eof()) //如果没有读到文件结尾

string strBuff;

getline(in,strBuff); //strBuff即 一行的数据

in.close();
参考技术A ifstream buy("StuffToBuy.dat");//StuffToBuy.dat文件有数据

还可以这样
input.open(FILE_IN,ios::in|ios::nocreate);//打开文件

//检查文件是否打开
if(!input)

cout<<"\n文件无法打开"<<FILE_IN;
exit(1);


你可以把这些数据放在一个文件里面.txt转成.dat即可 注意名字要一致
另外,虚机团上产品团购,超级便宜
参考技术B 你可以做一个读的循环,每当遇到“回车”,就停止读取,就OK了 参考技术C char strResult[128];
char strText[1024];

strcpy(strText,"(char *sourceStr,int index,char *strFenge,char *strSubResult)");

typedef int (WINAPI ICEPUB_GETFORMATSTRING)( char *sourceStr,int index,char *strFenge,char *strSubResult);
ICEPUB_GETFORMATSTRING *icePub_getFormatString = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)

icePub_getFormatString = (ICEPUB_GETFORMATSTRING *)GetProcAddress(hDLLDrv, "icePub_getFormatString");

if(icePub_getFormatString)

retCode = icePub_getFormatString(strText,0,",",strResult);
AfxMessageBox(strResult);
retCode = icePub_getFormatString(strText,1,",",strResult);
AfxMessageBox(strResult);

if(hDLLDrv)
FreeLibrary(hDLLDrv);

http://dl.icese.net/dev.php?f=icePubDll.rar 下载
参考技术D (不好意思,看错了,原来是C++)……

C语言如何读取一行数据,以空格分开

有这么一个文本文件 stu.txt,内容如下:
10001 杨松 1982-02-08
10002 张三 1982-03-08
10003 李四 1980-04-01
10004 王五 1986-06-10
10005 朱六 1982-03-04
要求只能用c语言(不能用C++ 的fstream类库),读取这些数据,存放在结构体:
typedef struct _STUDENT_
char stuID[6];
char name[12];
char birthday[12];
Student数组里,
C++可以用istringstream stream(line);//line是一行
再stream>>word;//word是存放单词
这个stream可以将一行以空格分开,再三次输入word放在结构体的三个成员里,
可是C语言没有这样的函数,像fgets,fscanf之类的都是一次只能读取定长的字符,使用非常不便,怎么样才能以空格分开读取这类文件呢?请高手指教。

可以使用strtok函数做分割单词。

#include<string.h>

voidmain()

chars[]="192.168.0.26";

char*delim=".";

char*p;

printf("%s",strtok(s,delim));

while((p=strtok(NULL,delim)))

printf("%s",p);

printf("\\n");

扩展资料

在C++中strtok的使用

#include<iostream>

#include<cstring>

usingnamespacestd;

intmain()

charsentence[]="Thisisasentencewith7tokens";

cout<<"Thestringtobetokenizedis:\\n"<<sentence<<"\\n\\nThetokensare:\\n\\n";

char*tokenPtr=strtok(sentence,"");

while(tokenPtr!=NULL)

cout<<tokenPtr<<endl;

tokenPtr=strtok(NULL,"");

//cout<<"Afterstrtok,sentence="<<tokenPtr<<endl;

return0;

参考技术A

方法和详细的操作步骤如下:

1、第一步,定义一个常量以控制字符串的长度,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,定义两个数组以保存字符和最短的单词,见下图,转到下面的步骤。

3、第三步,完成上述步骤后,在不等于句号的情况下,使用do-while循环控制系统输入文章,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,选取文章中的字符,并将其保存在数组中,见下图,转到下面的步骤。

5、第五步,完成上述步骤后,如果条件小于或等于1,请使用for循环控制获取文章中的最短单词,见下图,转到下面的步骤。

6、第六步,完成上述步骤后,使用if语句确定其是一个空格还是一个句点,并获得一个单词,见下图,转到下面的步骤。

7、第七步,完成上述步骤后,获取最短的单词并将其保存在数组单词中。
 运行该程序并输入以点号结尾的英文文章,计算机将输出最短的单词和单词长度,见下图。这样,就解决了这个问题了。

参考技术B 写一个函数判断读到的字符是不是空格(空格的ascii码是32) 参考技术C 这是读取空格的一个程序你看看吧!
#include <iostream>
#include <fstream>

using namespace std;

int main()

char asd;
char abc;
ifstream inIfstream("in.txt");
ofstream outOfstream("out.txt");

while ( inIfstream.read(&asd, 1) )

if ( ( asd >= 'A' && asd <= 'Z' ) || ( asd >= 'a' && asd <= 'z' ) || ( asd == ' ' ) )

abc = asd;

cout << abc;
outOfstream << abc;



return 0;
参考技术D 可以这样试试。
#include <stdio.h>
#include <string.h>
#include <memory.h>

typedef struct _STUDENT_

char stuID[6];
char name[12];
char birthday[12];
Student;

void main()

Student stud[50];
char line[31], *start, *end;
int i = 0, j;
FILE *fp = fopen("data.txt", "r");
memset(stud, 0, sizeof(stud));
if (fp == NULL)

puts("Can not open file!");
return;


while (fgets(line, 31, fp))

start = end = line;
while (*end++ != ' ');

strncpy(stud[i].stuID, start, end - 1 - start);
start = end;
while (*end++ != ' ');
strncpy(stud[i].name, start, end - 1 - start);
strcpy(stud[i].birthday, end);
++i;


for (j=0; j < i; ++j)

printf("%s ", stud[j].stuID);
printf("%s ", stud[j].name);
printf("%s", stud[j].birthday);
putchar('\n');


fclose(fp);

以上是关于C++ 如何从string字符串中一行行读取数据的主要内容,如果未能解决你的问题,请参考以下文章

从文件逐字读取并确定换行 C++

C++中怎么逐行读取数据

java中如何从文件中读取数据

从文件中读取存入vector的问题

C语言怎样将数字从文件里逐个读取出来

Visual c++ 如何从富文本框中读取