gpt4 book ai didi

c++ - 字符串 vector 不能按预期使用换行符和迭代器? (C++)

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:26 26 4
gpt4 key购买 nike

我有一个由 3 行组成的文本文件:

Line 1

Line 3

(第一行,空行,第三行)

vector<string> text;
vector<string>::iterator it;
ifstream file("test.txt");
string str;

while (getline(file, str))
{
if (str.length() == 0)
str = "\n";
// since getline discards the newline character, replacing blank strings with newline

text.push_back(str);
} // while

for (it=text.begin(); it < text.end(); it++)
cout << (*it);

打印出来:

Line 1
Line 3

我不确定为什么没有打印出只有换行符的字符串。任何帮助,将不胜感激。谢谢。

最佳答案

不是吗?事实上,它是!在 Line 1 之后有一个换行符的原因正是其中包含换行符的空字符串,没有其他内容。如果不是第二行,您会看到 Line 1Line 3 作为输出。 (你自己说过:getline 丢弃换行符。)

显然,按照我对您意图的理解,您应该按如下方式实现输出周期

for (it = text.begin(); it < text.end(); it++)  
cout << *it << endl;

这样您就可以在输出期间在每个字符串后添加一个换行符。但如果是这样,那么你就不需要在读取过程中手动为空字符串添加一个 \n 字符。

换句话说,决定你想做什么。目前还不清楚。

  • 如果你想恢复丢弃的阅读期间的换行符,你必须为所有行做这件事,不仅仅是空的。

  • 如果要加换行输出过程中的字符,你不需要明确地将它们插入完全阅读行。

事实上,将换行符逐字地插入字符串中是一个相当奇怪的想法。做什么的?由于您已经逐行阅读并存储了文本,因此可以隐含换行符。 IE。您可以像我上面那样进行打印(使用 endl),一切都会像预期的那样。

关于c++ - 字符串 vector 不能按预期使用换行符和迭代器? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com