#include <string>
#include <iostream>
#include <fstream>
#include <io.h>
#include <direct.h>
using namespace std;
bool writeandread(string strDir)
{
//ifstream in(strDir);//帶引數的構造,可以省去open函式
string path = strDir+"\\iotest.txt";
ofstream file1;//創建檔案流物件;
file1.open(path,ofstream::out); //打開檔案;
file1<<"HelloWorld"<<endl;//向檔案流物件輸出(寫檔案);
file1<<"let's start coding the world"<<endl;
file1.close(); //關閉檔案流;
ifstream in;
in.open(path,ifstream::in);
string s;
in.getline(const_cast<char*>(s.c_str()),20,'/n');
cout<<s<<endl;
in.close();
return true;
}
void main()
{
string Path = "F:\\tongyuan";
/*bool iFlag = createDir(Path);
if(iFlag==false)
return;*/
//write_text(Path);
writeandread(Path);
return;
}
我想依次讀出檔案的兩行,如何來做?
執行本段程式的時候,dos框有大量亂碼顯示,為什么?(跟20有關,求解釋)
uj5u.com熱心網友回復:
沒人嗎,求大神看看源程式uj5u.com熱心網友回復:
string s;
s.resize(21,0) ;//給字串分配記憶體空間,并填0.注意要多給一個字串結束符0
in.getline(const_cast<char*>(s.c_str()),20,'/n'); //如果未分配空間,出來可能會是亂碼。
cout<<s<<endl;
你是寫后馬上讀,加上這一句會可靠些。
file1<< std::flush; //檔案關閉前回寫檔案緩沖
file1.close(); //關閉檔案流;
uj5u.com熱心網友回復:
謝謝大神,按照你的方法改了,沒有亂碼了,但是依然無法輸出完整的兩行,只有:HelloWorld
Let's start codi
后面就沒有了
uj5u.com熱心網友回復:
謝謝大神,按照你的方法改了,沒有亂碼了,但是依然無法輸出完整的兩行,只有:
HelloWorld
Let's start codi
后面就沒有了
uj5u.com熱心網友回復:
你一行最多讀20個字符,不止20個字符的話,就要多讀些,緩沖區就要多分配些空間。uj5u.com熱心網友回復:
我改成100,1000,試了一下,都是一樣的不完整字串
uj5u.com熱心網友回復:
打開你的檔案,看寫全了沒?uj5u.com熱心網友回復:
我看了,寫全了的,但是讀出來不全轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/97275.html
標籤:基礎類
