在将文本输出到cmdPrompt时,我无法弄清楚如何获取要显示的换行符。 .text文件是这样的:
"Roses are red
violets are blue
sugar is sweet
and so are you"
我的循环代码是:
#define newLn "\n"
ifstream ins; //these two are near the top where the programs opens the file
string aString;
while(ins >> aString){
if(aString != newLn){
cout << aString << ' ';
}
else
cout << endl;
}
它在文本中读得很好,但它只是显示如下:
Roses are red violets are blue sugar is sweet and so are you
我不知道如何显示它与文本文件中的完全一样(每个语句后都有换行符。我知道你可以用while(nextCharacter!= newLn)来读取字符,但是字符串让我难住了。
答案 0 :(得分:1)
使用格式化提取功能时,例如:
while(ins >> aString){
您将丢失流中存在的所有空白字符。
为了保留空白,您可以使用std::getline
。
std::string line;
while ( getline(ins, line) )
{
std::cout << line << std::endl;
}
如果您需要从行中提取单个标记,则可以使用std::istringstream
处理文本行。
std::string line;
while ( getline(ins, line) )
{
cout << line << std::endl;
std::istringstream str(line);
std::string token;
while ( str >> token )
{
// Use token
}
}
答案 1 :(得分:1)
您正在使用&#34; fstream提取运算符&#34;读入文件内容。所以请记住,操作员不会读取占用空白和新行,但它认为它们是单词的结尾。因此,请使用std::getline
。
while(std::getline(ins, aString) )
std::cout << aString << std::endl;