gpt4 book ai didi

c++ - 逐字阅读文本文件时,如何忽略 "end of line"或 "new line"字符?

转载 作者:行者123 更新时间:2023-11-30 02:41:18 25 4
gpt4 key购买 nike

目标:

我正在逐字阅读文本文件,并将每个字保存为数组中的一个元素。然后我逐字打印出这个数组。我知道这可以更有效地完成,但这是一项任务,我必须使用数组。

我正在对数组做更多的事情,例如计算重复元素、删除某些元素等。我还成功地将文件转换为完全小写且没有标点符号。

现状:

我有一个如下所示的文本文件:

beginning of file




more lines with some bizzare spacing
some lines next to each other
while

others are farther apart
eof

这是我的一些代码,其中 itemsInArray 初始化为 0 和一个称为 wordArray[(适合我的文件的长度)]:


ifstream infile;
infile.open(fileExample);

while (!infile.eof()) {

string temp;
getline(infile,temp,' '); // Successfully reads words seperated by a single space


if ((temp != "") && (temp != '\n') && (temp != " ") && (temp != "\n") && (temp != "\0") {
wordArray[itemsInArray] = temp;
itemsInArray++;
}

问题:

我的代码将行尾字符保存为数组中的一个项目。在我的 if 语句中,我列出了我尝试排除行尾字符的所有方法,但我没有成功。

如何防止行尾字符保存为数组中的项目?

我已经尝试了一些我在与此类似的线程上发现的其他方法,包括我无法使用的带有 *const char 的方法,以及遍历和删除新行字符。我已经为此工作了几个小时,我不想重新发布相同的问题,并且尝试了很多很多方法。

最佳答案

std::string 重载的标准 >>> 运算符已经使用空格作为单词边界,因此您的程序可以大大简化。

#include <iostream>
#include <string>
#include <vector>

int
main()
{
std::vector<std::string> words {};
{
std::string tmp {};
while (std::cin >> tmp)
words.push_back(tmp);
}
for (const auto& word : words)
std::cout << "'" << word << "'" << std::endl;
}

对于您显示的输入,这将输出:

'beginning'
'of'
'file'
'more'
'lines'
'with'
'some'
'bizzare'
'spacing'
'some'
'lines'
'next'
'to'
'each'
'other'
'while'
'others'
'are'
'farther'
'apart'
'eof'

这不是你想要的吗?

关于c++ - 逐字阅读文本文件时,如何忽略 "end of line"或 "new line"字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28259141/

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