2011-05-21 79 views
1

我有一个C++代码片段,用于删除文本文件中某行的第一个单词,例如从文本文件开头的行中删除空格

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

尽管它删除了第一个单词,修剪后仍有剩余空间,是否有办法停止删除此空间?

#include <iostream> 
using namespace std; 

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

这不是C ,这是C++。它们是有区别的。如果我看到另一个混淆这两个问题的问题,我会去正则表达式 - 克苏鲁疯狂。 – 2011-05-21 21:31:45

+2

也,这不是寡妇,它的窗户! – 2011-05-21 21:33:56

+0

[eof problem C++]的可能重复(http://stackoverflow.com/questions/5764579/eof-problem-c) – 2011-05-21 21:36:14

回答

1

你只需要分流到cout前修剪tmp。从图书馆使用你最喜欢的trim函数,或者写你自己的。

你可以找到装饰功能在这里的一些选项:What's the best way to trim std::string?

一旦你有一个装饰功能,和Evan特兰的版本看起来相当不错,你则可以这样写:

cin >> tmp; 
    getline(cin, tmp); 
    cout << trim(tmp) << endl; 
+0

你能提供一个例子吗? – James 2011-05-21 21:38:13