C++从txt文本中输入和读取字符串

  • Post author:
  • Post category:其他





文件的关联




文件操作首先需要包含头文件

fstream





fstream


头文件中定义用于输入的


ifstream


类和用于输出的


ofstream


类。


可以通过使用这两个类来声明对象:

ifstream in_file;

ofstream out_file;


将我们声明的对象与文件关联起来

:

out_file.open(“name.txt”);

in_file.open(“name.txt”);

Ps:



打开的文件最后一定要关闭


。例如:


out_file.close();




下面的例子包含了向文件输入字符串和从文件读取字符串:

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
main()
{
    char filename[20];           //定义文件名字符数组
    ofstream out_file;

    cout << "Enter file name: "; //输入文件名
    cin >>filename;
    out_file.open(filename);     //使ouffile关联文件
    cout << "Please enter string(q to quit): "<<endl;
    char str[100];
    cin.getline(str,100).get();  //输入文件名 并吸收最后的回车符
    while(strcmp(str,"q")!=0)    //输入想要输进文件中的字符串 单独输入 q 退出输入。
    {
        out_file << str << endl; // 像使用cout 一样输入到文件中
        cin.getline(str,100);
    }
    out_file.close();            // 输入完毕 关闭文件

    ifstream in_file;
    in_file.open(filename);
    string item;
    getline(in_file,item);       //从文件中获取以'\n'为结尾的字符串
    while(in_file)
    {
        cout <<item <<endl;      //输出获取的字符串
        getline(in_file,item);
    }
    in_file.close();             //输出完毕 关闭文件
}



运行结果:








从 apple 一直到 orange 都是输入的字符串 并在输入完成后 按 q 并回车就会退出输入,然后打印出我们输入的字符串。











在上例中使用

getline(in_file,item);

从文件中读取字符串存入


item


中。







这一次只从文件中读取:


#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

main()
{
    char filename[20];      
    cout << "Enter file name: ";    
    cin >>filename;            //输入文件名

    ifstream in_file;

    in_file.open(filename); //关联文件

   string item; getline(in_file,item,';'); //从文件中获取以'\n'为结尾的字符串 
    while(in_file) 
   { 
        cout <<item <<endl; //输出获取的字符串 
        getline(in_file,item,';'); 
   } 
    in_file.close(); //输出完毕 关闭文件
}



运行结果:







在本例中可以看到

getline(in_file,item)

中加入了

’;’

意思是

:

;

号为字符串读取的结尾点





如果不设置结尾点则像第一个程序一样则会



默认为以 \n 字符为结尾点





通过运行可以看到每次读取时遇到

;


则停止读取



可能有人会疑惑在

strawberry




mango


之间并没有


;


号,那为什么也会换行输出,


而不是像


pineapple peach


一样连在一起输出呢?



因为当设置了停止符号

; 号后



‘\n’ 将不会起作用且会被当作字符存入字符串中。在输出字符串的时候起作用。





版权声明:本文为Charles_Zhang_Ng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。