无论何时,新行后面都有一个新行或(“\ n”)和一个空格(“”),我想忽略“\ n”并只打印输出中的空格,如何我可以这样做吗?
这是一个例子:
newegg
bizrate
想要将其更改为:
newegg bizrate
我很困惑,因为我想我不能通过逐行阅读来做到这一点!下面是我粗略的代码,我不知道如何继续... 非常感谢。
ifstream file ("input.txt");
ofstream output("output.txt");
string line;
if(file.is_open())
{
while (!file.eof())
{
getline (file, line);
if (line.find("\n"+' ') != string::npos)
{
??
}
答案 0 :(得分:1)
函数getline()
(文档here)将读取并丢弃\n
字符,因此无需在字符串中搜索它。
做这样的事情:
bool first = true;
while (!file.eof())
{
getline(file, line);
// you may want to check that you haven't read the EOF here
if (!first)
{
cout << " ";
}
else
{
first = false;
}
cout << line;
}
答案 1 :(得分:1)
这样做。函数getline()将读取\n
字符
getline(file, line);
cout<<line;
while (!file.eof())
{
getline(file, line);
if (line[0]==' ')
{
cout <<" "<<line;
}
else
{
cout <<"\n"<<line;
}
}
答案 2 :(得分:0)
你可能想要这个:
#include <cctype>
#include <iostream>
#include <sstream>
int main() {
std::istringstream input(""
"newegg\n"
" bizrate\n"
"End");
std::string line;
while(std::getline(input, line)) {
while(std::isspace(input.peek())) {
std::string next_line;
std::getline(input, next_line);
line += next_line;
}
std::cout << line << '\n';
}
}
请注意:对EOF的测试可能是错误的。