2011-05-21 39 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); 
相关问题