我无法从文本文件中读取行吗?

时间:2018-12-06 10:31:35

标签: c++ string

我想从文本文件中读取一行,将该行存储在字符串数组中,以便以后显示可以在其上找到一个单词的行号,还可以将该行分解为多个单词以标记出唯一的次数话来了。我已经能够成功地逐行分解行并标记行出现的频率,但是我正努力将行存储在字符串数组中,以便以后使用。

void get_word(istream& in_stream, string& w,
              list<string> &wordlist, int& lineCount, string *line)
{

  string t;
  getline(in_stream,t);

  for (int j=0; t[j]; j++)
    t[j] = tolower(t[j]);

  line = &t;
  istringstream iss(t);
  string word;
  while(iss >> word) 
  {
    insert_word(word, wordlist);
  }

}

到目前为止,这是我所拥有的,无论我尝试对要向其指向的“行”数组分配字符串“ t”的行如何处理,都不会在数组中放置任何内容,我想我完全错过了一些东西。 行初始化为:

string line[0];

1 个答案:

答案 0 :(得分:0)

首先,string line[0]为您提供了没有字符串的数组。那不可能是您想要的。为什么不简单地string line?那是一个字符串。您可以使用&line将指向该字符串的指针传递给函数。

第二,line = &t将输入指针替换为指向局部变量的指针。功能结束后,该信息将丢失。如果您写*line = t,则将“ line指向的字符串”设置为“字符串t的值。

理想情况下,您会避免使用“ out参数”,而只是返回所需的字符串。