2014-02-12 29 views
0

我正在將從MS Studio創建的程序移植到Ubuntu。該程序工作正常,除非它從文本文件中讀取。讀取Ubuntu中的文本文件還有額外的功能// r

我的文本文件,包括由分隔符:

General Manager:G001:def 
Customer:C001:def:Lim:Tom:Mr:99999999:[email protected]:Blk 145 B North #03-03 Singapore 111111 

Read方法

while (getline(afile,line,'\n')) //read line and store string in variable line 
     { 


      stringstream ss(line); 
      string s; 
      while (getline(ss,s,':')) 
      { 
       word.push_back(s); 
      } 


      word.clear(); 

     } 

在Windows平臺上分隔的信息行,它被正確地存儲爲def

然而在Ubuntu平臺上,它存儲爲def\\r

這對C適用ustomer Record但給出了General Manager

的問題,我知道它是與Carriage return,但我不知道如何解決它

+0

看看這個問題:http://stackoverflow.com/questions/6089231/getting-std-ifstream-to-handle-lf-cr-and-crlf – user1781290

回答

0

如果文本文件被創建於Windows ,您可以使用dos2unix命令從文件中刪除多餘的\ r。該命令只是dos2unix filenamegoeshere

+0

爲什麼它是\\ r和不是\ r – Computernerd

+0

輸入文件將有\ r,但我不知道它爲什麼會被轉換爲\\ r。 – immibis

+0

假設txt文件名:User.txt,我輸入「dos2unix User.txt」,它不起作用 – Computernerd