C++/C:修剪一个文本文件的每一行的第一个字
我要寻找一个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;
}
#include <iostream>
using namespace std;
int main()
{
string tmp;
while (!cin.eof())
{
cin >> tmp;
getline(cin, tmp);
cout << tmp << endl;
}
}
C#: -
string line = "test C:\Windows\System32\cacl.exe";
string output = line.substring(line.IndexOf(" "));
嗨,文本文件中的行是未知的,因此不能被预定义为一个字符串 – James 2011-05-21 19:48:20
@詹姆斯你说的文本文件 - 文本是字符串数据。 – 2011-05-21 19:50:01
@Chuck - 我认为他的意思是他无法在代码中初始化一个字符串变量。它必须从文件内容中读取。埃尔诺的答案看起来像那个。 – 2011-05-21 19:54:02
C#:
var lines = File.ReadAllLines("...");
var removedFirstWords = from line in lines
select line.SubString(line.IndexOf(" ")+1);
(没有检查它。可能包含错误)
这是要走的路。如果你需要独立地获取每个字符串,那么不要使用LINQ,而只需要'foreach'' lines'这是一个字符串数组。 – 2011-05-21 19:57:34
确实。当包含这些行的文件非常庞大时,这种方式会产生巨大的内存影响。因此,从文件中逐行读取解析可能会更好。 – 2011-05-21 20:03:18
在C#:
var fileContent = File.ReadAllText(@"c:\1.txt");
var result = Regex.Replace(fileContent, @"^\w*\s+(.*)$", "$1", RegexOptions.Multiline);
File.WriteAllText(@"c:\2.txt", result);
我我失去了一些东西? 'strpbrk'的第二个参数没有空格。 – andrewdski 2011-05-21 19:45:43
至少你可以很灵活地接受完全不同语言的完全不同的解决方案。但是,有什么与Windows有关的呢? – 2011-05-21 19:47:13
C或C++?你必须选择。看看你的例子,这绝对是C. – 2011-05-21 19:51:29