C csv檔案處理 與 sstream應用

2021-07-10 13:18:00 字數 3058 閱讀 7487

利用標頭檔案

進一步理解:

注意1:在這一段**

ifstream fin("file.txt");

char ch;

int countere=0;

int countersum = 0;

if (fin)

}else

執行中可以看出

1:如果檔案不存在是會列印」檔案開啟失敗的 「意味著fin.eof()並不能表明檔案是否開啟 2:如果給乙個全e的檔案,sum會比countere 大1,這其實是在檔案讀取完後再讀取一次才能將fin.eof()置為1.也就是表明達到的檔案的末尾.

這裡目前我大致的思路是用getline(),以','為分隔符,先讀入string中再做具體的處理。

這裡以遇到的處理數字為例,用stringstream將字串變為相應的數字,這一部分參見

似乎效率會一直有人噴c++io很慢,不過目前用起來很簡單就夠了.

ifstream file ("topo.csv");

string linestring;

stringstream slinestring;

string singlestring;

stringstream ssinglestring;

int temp;

vector

v;while (file)

slinestring.clear();}}

for (auto i = v.begin(); i != v.end();++i)

這裡關於stringstream的使用還有一些問題,今天補起來

相關部落格:

類檢視即引用關係:

**put()成員函式用於在尾部新增字元

str()成員函式物件返回乙個string字串

流操作符結合stringstream進行格式的轉換**

istringstream

istringstream類用於執行c++風格的串流的輸入操作。

//istringstream類用於執行c++風格的串流的輸入操作。

//str()成員函式的使用可以讓istringstream物件返回乙個string字串

istringstream istr("1 56.72");

int a;

istr>>a;

cout

<

<

istr >> b;

cout

<< "b:"

<< b << endl;

cout

<< "讀取b後的ostr:"

<< istr.str() << endl;

//那麼這裡是不是恰好是這樣符合讀取的順序才能正確讀出呢

//以下為驗證

istringstream istr2("1 56.72 2 2.5 3");

int x1, x2, x3;

double y;

istr2 >> y;

istr2 >> x1;

istr2 >> x2;

istr2 >> x3;

cout

<< "y:"

<< y << '\t'

<< "x1:"

<< x1 << '\t'

<< "x2:"

<< x2 << '\t'

<< "x3:"

<< x3 << '\t'

<< endl;

//顯然 上述例子說明其只是按順序在讀取

//輸出結果

/* a:1

讀取a後的ostr:1 56.72

b:56.72

讀取b後的ostr:1 56.72

y:1 x1:56 x2:-858993460 x3:-858993460

*/

2. ostringstream

//ostringstream

//put()函式用於在尾部新增字元

ostringstream ostr;

ostr.put('d');

ostr << "dawdawd";

cout

<< ostr.str() << endl;

string gstr = ostr.str();

cout

<< gstr << endl;

ostr << "xyz";

gstr = ostr.str();

cout

<< gstr << endl;

ostringstream ostr2("qwe");

cout

<< ostr2.str() << endl;

ostr2.put('s');

cout

<< ostr2.str() << endl;

ostr2 << "dawdwafffgg";

cout

<< ostr2.str() << endl;

/*輸出結果

ddawdawd

ddawdawd

ddawdawdxyz

qweswe

sdawdwafffgg

*/

3.stringstream

使用方法類似,這裡用其進行格式轉換

stringstream sstr("ccc");

sstr.put('a');

sstr.put('e');

string gstr2 = sstr.str();

cout

<< gstr2 << endl;

int int_a; //int a;

sstr >> int_a;

cout

<< int_a<< endl;

sstr >> int_a;

cout

<< int_a<< endl;

C CSV檔案操作

namespace common strline.remove strline.length 1 sw.writeline strline strline 表的內容 for int j 0 j dt.rows.count j sw.writeline strline sw.close catch e...

C CSV檔案讀寫

方法一 using system.text using system.data using system.io namespace opencsv else dt.rows.add dr if aryline null aryline.length 0 sr.close fs.close retur...

Linux檔案處理與搜尋

1 cut 資料剪下 語法 cut option.file 選項 b 以位元組為單位進行分割 c 以字元為單位進行分割 d 自定義分割符,預設為製表符 f 與 d一起使用,指定顯示哪個區域2 sort 欄位排序 語法 sort option file sort option file 選項 r 反向...