使用getline时缺少空间

时间:2016-11-28 07:47:18

标签: c++

我是C ++的新手,我有一个文本文件,它看起来像

******Text*******
A B C
D E 
******Text*******

我想要的字符串是A B C D E. 但我得到了A B CDE 当我跳过这条线时,C和D之间缺少空间。

string arr[1000];
ifstream fin;
string str;
fin.open("D1.txt");
if (!fin.is_open())                 
{
    cout << "Unable to open file hello.txt." << endl;
};
if (fin)

{
    while(getline(fin, str,'\n'))
    cout << str;
}

1 个答案:

答案 0 :(得分:1)

这是因为在C和D之间没有空间,唯一的是&#34; \ n&#34;。 有一些技巧可以解决你的问题: 1-您可以更改文件并在第二行的第一行添加空格,如下所示:

******Text*******
A B C
 D E 
******Text*******

2-您将代码更改为:

string arr[1000];
ifstream fin;
string str;
fin.open("D1.txt");
if (!fin.is_open())                 
{
    cout << "Unable to open file hello.txt." << endl;
};
if (fin)

{
    while(getline(fin, str,'\n'))
    cout << str <<" ";
}

这会在每一行之后给出一个空格,它可以解决你的问题。

P.S。:在我的想法中,第二种解决方案更好; - )