c++ - 如何检查 '\t' ?

标签 c++ arrays ifstream character-arrays

我有一段代码可以读取一个文本文件,并将文件中的每个单词转换为一个字符数组(需要是一个字符数组,不允许使用字符串),它是 Word 类的数据成员。当遇到标点符号时,所有 Word 对象都会作为链表存储到 Sentence 类中。遇到tab时,将之前的所有Sentences以链表的形式存储在Paragraph类中。我需要帮助的是一种在文本文件中检查“\t”的方法。我正在使用阅读

while(myFile >> charArray){
//stuff
}

因为这会读取一个完整的单词并将其存储在 charArray 中。如果它是一个句子的结尾,charArray[size](size 是最后一个元素)将 == '.' || ==“!” || == "?" 所以我每次都可以处理一个新的句子(我可以假设文本文件每次都会正确格式化)。我不知道该怎么做的是如何检查 '\t' 字符来创建一个新段落。 '\t' 会被 myFile >> charArray 获取吗?我试着弄乱了各种 if 语句,看看我是否可以选择一个 '\t' 字符,但我没能做到。那么如何在从文本文件读入字符数组时检查制表符呢?

最佳答案

默认情况下,

iostreams operator>> 将读取并丢弃前导空格。包括开始新段落的制表符。我建议空行也应该被视为段落分隔符。许多人在一行的开头使用一连串普通空格字符来产生缩进,而不是制表符,因此您也应该检查一下。

我的首选方法是使用 getline 读取整行文本、空格和所有内容。测试第一个字符并决定是否开始一个新段落。然后将该行加载到字符串流中并使用 operator>> 提取单个单词。这与 R Sahu 的评论非常相似......但我不会在制表符上拆分行。相反,您只关心行首的制表符/空格。

您还可以尝试使用 noskipwsreading individual whitespace characters

关于c++ - 如何检查 '\t' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514972/

相关文章:

c++ - 如何从 boost 库中的文件中读取数据

javascript - 访问 jQuery 中的类属性 - 键值对

c++ - 使用 std::ifstream 进行输入验证

c++ - 在 C++ 中读取已知格式的数据

C++ 从包含字符的文件中读取数字

C++ 帮助理解偏特化

c++ - 返回一个只读双指针

c - "Copy string from array to array"使用指针的函数

javascript - 根据另一个数组中较新的对象更新数组

c++ - CoCreateInstance 返回 E_INVALIDARG