×

怎么把string写进文件

怎么把string写进文件(string类型写入文件)

admin admin 发表于2023-03-22 01:13:18 浏览54 评论0

抢沙发发表评论

本文目录一览:

C语言里如何把已有的字符串写入文件里?

设要写入的数字是int型,则用控制字符串%d和%s来完成,举例代码行如下:

fprintf(fp,"%d %s\n",12345,"abcdefg");

其中:fp是成功写打开文件的指针。此代码行先向文件写入整型数字12345,再加一个空格,接着写入字符串abcdefg,然后写入'\n'。

#include "stdio.h"

#include "string.h"

void main()

{

char a[6]="china";

char temp[1024];

int n=0;//记录有多少个china

FILE *outFile=fopen("c:\b.txt","r+");

FILE *inFile=fopen("c:\a.txt","r+");

while(fgets(temp,500,inFile)!=NULL)

{

int k=0;

for(int i=0;istrlen(temp);i++)

{

if(temp[i]==a[k] kstrlen(a))

{

k++;

}

else

{

if(k==strlen(a))

{

n++;

fprintf(outFile,"%s

",a);

}

k=0;

}

}

}

}

在C盘要有这两个文件。。。

a文件中可能有多个china ,指定加到第几行自己看情况 在设置一个int变量记录就行了

C语言如何将字符串写入文本文件?

从键盘输入一行字符,写入一个文件, 再把该文件内容读出显示在屏幕上。\x0d\x0a#include\x0d\x0amain()\x0d\x0a{\x0d\x0aFILE *fp;\x0d\x0achar ch;\x0d\x0aif((fp=fopen("string","wt+"))==NULL)\x0d\x0a{\x0d\x0aprintf("Cannot open file strike any key exit!");\x0d\x0agetch();\x0d\x0aexit(1);\x0d\x0a}\x0d\x0aprintf("input a string:\n");\x0d\x0ach=getchar();\x0d\x0awhile (ch!='\n')\x0d\x0a{\x0d\x0afputc(ch,fp);\x0d\x0ach=getchar();\x0d\x0a}\x0d\x0arewind(fp);\x0d\x0ach=fgetc(fp);\x0d\x0awhile(ch!=EOF)\x0d\x0a{\x0d\x0aputchar(ch);\x0d\x0ach=fgetc(fp);\x0d\x0a}\x0d\x0aprintf("\n");\x0d\x0afclose(fp);\x0d\x0a}-怎么把string写进文件

c语言中string声明的变量如何存进文件去?

在C语言中并没有string类型的变量。string类型变量是C++的。

1 在C语言中,字符串是用字符数组表示的,要将字符串存到文件中,可以使用

fprintf函数。

代码如下:

fprintf(fp, "%s", str);

其中,fp为打开的文件指针,str为字符串变量。

2 在C++中,要将string类型变量存到文件中,根据文件操作的方式,有如下两种:

a)ofstream流对象打开的文件。

使用重载即可。如

outstr;

其中,str为string对象,而out为ofstream对象。

b)fopen打开的文件。

要将string对象存到fopen打开的文件中,要先把string转为C格式的字符串。即字符数组形式,可以使用string的c_str()成员函数。然后再如1中所述,使用fprintf输入到文件。

代码:

fprintf(fp, "%s",str.c_str());

编程问题:怎么把string类保存到二进制文件中?

分类: 电脑/网络 程序设计 其他编程语言

问题描述:

#include iostream

#include string

#include fstream

using namespace std;

int main()

{

string str1;

string str2;

cin str1;

cin str2;

ofstream outfile("temp.dat",ios::binary);

if(! outfile)

{

cerr "Error ! " endl;

return 0;

}

outfile.write((char * )str1,sizeof(string));

outfile.write((char * )str2,sizeof(string));

outfile.close();

ifstream infile("temp.dat",ios::binary);

if (! infile)

{

cerr "Error ! " endl;

return 0;

}

infile.read((char * )str1,sizeof(string));

infile.read((char * )str2,sizeof(string));

cout str1 endl;

cout str2 endl;

return 1;

}

如果我就这样执行的话,str1和str2能保存到文件,而且能够成功读取并显示。

但如果我把“保存”的那一段代码删掉,读取就会失败,显示乱码。怎么回事?怎么解决?(不要复制一大堆东西过来,谢谢。)

解析:

不是以上两位说的原因,因为string类实际上是对char*的封装,你用write那样写其实只是把对应的指针也就是内存地址写进文件了,在执行期,读出的是指针,这时内存中的字符串还在,可以正确显示,你把"保存"的那段删了,实际上刚才在内存中的东西已经没有了,输出的也就是乱码了,这就是你错的原因,我改了下你的程序:-怎么把string写进文件

#include iostream

#include string

#include fstream

using namespace std;

int main()

{

string str1;

string str2;

int len1,len2;

cin str1;

cin str2;

ofstream outfile("temp.txt",ios::binary);

if(! outfile)

{

cerr "Error ! " endl;

return 0;

}

len1=str1.length();

len2=str2.length();

outfile.write((char*)str1.c_str(),len1);

outfile.write(" ",sizeof(char));

outfile.write((char*)str2.c_str(),len2);

outfile.write(" ",sizeof(char));

outfile.close();

ifstream infile("temp.txt",ios::binary);

if (! infile)

{

cerr "Error ! " endl;

return 0;

}

infilestr1str2;

cout str1 endl;

cout str2 endl;

return 1;

}

改的地方一眼就看出来了,就不说了,其实我用的方法很简单也有缺陷,不过这只是一个演示,如果你明白我刚才说的那些,知道了原理,你很容易改成任意你想要的效果

java中如何把String数组写到文件里

这个方法比较多我常用的是:

String[] ary = {"abc", "123", "45"};

StringBuffer sb = new StringBuffer();

for(int i = 0; i ary.length; i++){

sb. append(ary[i]);

}

String newStr = sb.toString();

如果是char数组可以

char data[] = {'a', 'b', 'c'};

String str = new String(data);

或直接利用Array工具的方法。

要特别注意的是象Array的很多转换函数是把(字符数)组直接转换成