2011-05-21 42 views
0

我要尋找一個C/C++或甚至C#代碼,將修剪在一個文本文件C++/C:修剪一個文本文件的每一行的第一個字

例如每行的第一個字file.txt的

test C:\Windows\System32\cacl.exe 
download C:\Program Files\MS\ 

所以我將留下:

C:\Windows\System32\cacl.exe 
C:\Program Files\MS\ 

我當前的代碼,但它似乎沒有工作:

#include <stdio.h> 
#include <string.h> 

int main(int argc, char *argv[]) 
{ 
    char s[2048]; 
    while (fgets(s, sizeof(s), stdin)) 
    { 
     char *pos = strpbrk(s, "|\r\n"); 
     if (pos != 0) 
      fputs(pos+1, stdout); 
    } 
    return 0; 
} 
+0

我我失去了一些東西? 'strpbrk'的第二個參數沒有空格。 – andrewdski 2011-05-21 19:45:43

+0

至少你可以很靈活地接受完全不同語言的完全不同的解決方案。但是,有什麼與Windows有關的呢? – 2011-05-21 19:47:13

+2

C或C++?你必須選擇。看看你的例子,這絕對是C. – 2011-05-21 19:51:29

回答

3
#include <iostream> 
using namespace std; 

int main() 
{ 
    string tmp; 
    while (!cin.eof()) 
    { 
     cin >> tmp; 
     getline(cin, tmp); 
     cout << tmp << endl; 
    } 
} 
+0

我得到一個編譯錯誤:「strimmer.cpp'字符串'未申報(首次使用此功能)」 – James 2011-05-21 19:54:02

+0

對不起字符串與小寫s – 2011-05-21 19:54:49

+0

也「strimmer.cpp結束」未申報首先使用這個功能)「 – James 2011-05-21 19:56:17

1

C#: -

string line = "test C:\Windows\System32\cacl.exe"; 

string output = line.substring(line.IndexOf(" ")); 
+0

嗨,文本文件中的行是未知的,因此不能被預定義爲一個字符串 – James 2011-05-21 19:48:20

+1

@詹姆斯你說的文本文件 - 文本是字符串數據。 – 2011-05-21 19:50:01

+0

@Chuck - 我認爲他的意思是他無法在代碼中初始化一個字符串變量。它必須從文件內容中讀取。埃爾諾的答案看起來像那個。 – 2011-05-21 19:54:02

3

C#:

var lines = File.ReadAllLines("..."); 
var removedFirstWords = from line in lines 
         select line.SubString(line.IndexOf(" ")+1); 

(沒有檢查它。可能包含錯誤)

+0

這是要走的路。如果你需要獨立地獲取每個字符串,那麼不要使用LINQ,而只需要'foreach'' lines'這是一個字符串數組。 – 2011-05-21 19:57:34

+0

確實。當包含這些行的文件非常龐大時,這種方式會產生巨大的內存影響。因此,從文件中逐行讀取解析可能會更好。 – 2011-05-21 20:03:18

2

在C#:

var fileContent = File.ReadAllText(@"c:\1.txt"); 
var result = Regex.Replace(fileContent, @"^\w*\s+(.*)$", "$1", RegexOptions.Multiline); 
File.WriteAllText(@"c:\2.txt", result); 
相關問題