string foo ="";
ifstream openfile(argv[i+1]);//argv[i+1] is file name
if(openfile.is_open())
{
while(getline(openfile, foo))
{
istringstream myString(foo);
string w1;
while(myString >> w1)
cout<<w1<<' ';
cout <<""<< endl;
}
我需要正常打印文本,这意味着没有额外的换行符,每行末尾没有空格。
输出:
Launch Terminal
< Words Words Words
< Words Words Words Words Words Words
<
<
< Words Words Words Words
< Words Words Words Words
< Words Words Words Words
<
<
<
<
< Words
谢谢
答案 0 :(得分:1)
好吧,要删除换行符,只需替换它们即可。要摆脱每行末尾的空格,不要打印它们,你自己添加它们xD示例代码将是
string foo;
ifstream openfile (argv[i+1]);
if(openfile.is_open())
{
while(getline(openfile, foo))
{
//Remove new line character, if any
std::replace(foo.begin(), foo.end(), '\n', '');
//Remove carraige return (windows new line is '\r\n' instead of just '\n')
std::replace(foo.begin(), foo.end(), '\r', '');
std::cout << foo; //print line
}
}
然而,也许你真的想在每一行之间添加一个空格(所以在你打印foo之后),因为其他方面,一行的第一个可能会坚持到最后一行,因为那里&#39 ; s空格或换行符以保持它们的安装。
编辑:如果你想保留原来的新行字符,请删除代码中的两行std::replace(...)
;)你可能还想在打印foo后打印一个endl,具体取决于输出你期待,因为你的问题不是很清楚
Edit2:当我得到更多关于你真正想要的信息时,这里有一个更新的代码(至少)删除每行末尾的额外空格。如果这仍然没有做你想要的,那就更清楚一下特定文件的输出应该是什么样子了!
string foo;
ifstream openfile (argv[i+1]);
if(openfile.is_open())
{
while(getline(openfile, foo))
{
istringstream myString(foo);
string w1;
bool firstWord=true;
while(myString >> w1)
{
if(firstWord==false)
{
cout << " ";
}
firstWord = false;
cout << w1;
}
cout << endl;
}
}