如何检查' \ t'?

时间:2014-10-22 18:54:13

标签: c++ arrays ifstream character-arrays

我有一个读取文本文件的代码,并将文件中的每个单词转换为字符数组(需要是字符数组,不允许字符串),这是Word类的数据成员。遇到标点符号时,所有Word对象都作为链表存储在Sentence类中。遇到标签时,之前的所有句子都作为链表存储在Paragraph类中。我需要帮助的是一种在文本文件中检查'\ t'的方法。我正在阅读

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

因为它读出一个完整的单词并将其存储在charArray中。如果它是一个句子的结尾,charArray[size](大小是最后一个元素)将== '.' || == "!" || == "?"所以我可以处理每次创建一个新句子(我可以假设文本文件每次都会被正确格式化)。我不知道该怎么做是如何检查'\ t'字符来创建一个新段落。 '{1}}会不会被接听?我尝试弄乱各种myFile >> charArray语句,看看我是否可以选择一个'\ t'字符,但我无法做到。那么如何在从文本文件读入字符数组时检查选项卡?

2 个答案:

答案 0 :(得分:1)

默认情况下,iostream operator>>将读取并丢弃前导空格。包括开始新段落的制表符。我建议一个空行也应该被认为是一个段落分隔符。许多人在一行开头使用一系列普通空格字符来产生缩进,而不是制表符,所以你也应该检查它。

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

您还可以试用noskipwsreading individual whitespace characters

答案 1 :(得分:0)

这可能会帮助您/成为您的目标:

http://www.cplusplus.com/reference/cstring/strchr/

您对C ++提供的重载感兴趣:

char * strchr(char * str,int character);

这将返回指向字符第一次出现的指针,如果找不到则返回空指针。

使用示例(由Cplusplus.com提供)可在此处找到:

/* strchr example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] = "This is a sample string";
  char * pch;
  printf ("Looking for the 's' character in \"%s\"...\n",str);
  pch=strchr(str,'s');
  while (pch!=NULL)
  {
    printf ("found at %d\n",pch-str+1);
    pch=strchr(pch+1,'s');
  }
  return 0;
}