繁体   English   中英

从C ++中的空格读取文件

[英]Read from a file with blank spaces in C++

我正在读取文件,并将array(pointer)的前端传递回我的main函数。 我遇到的问题是它没有在单词之间复制空格。 例如, Hello HelloHelloHello

我从使用getLine开始,然后遇到了文件大小的问题。 我将其设置为500,因为没有文件大于500,但是大多数文件都小于500,因此我试图获取文件的确切大小。

这是我的代码:

char infile()
{
   const int SIZE=500;
   char input[SIZE];
   char fromFile; 
   int i=0;

   ifstream readFile;
   readFile .open("text.txt");
   while(readFile>>fromFile)
   {
     input[i]=fromFile;
     i++;
   }
   cout<<endl;
   returnArray=new char[i];//memory leak need to solve later
   for(int j=0;j<i;j++)
   {
      returnArray[j]=input[j];
      cout<<returnArray[j];
    }
    cout<<endl;
  }
  return returnArray[0];
}

根据您的文件格式,您可能要改用ifstream::read()ifstream::getline()

operator >>将尝试使用空白作为标记之间的分隔符,在读取数据流时对其进行“标记”或“解析”。 您有兴趣从完整保留空白的文件中获取原始数据,因此应避免使用它。 如果要使用换行符作为分隔符一次读取一行数据,则应使用getline() 否则使用read()

使用std::stringstd::vectorstd::getline ,您仍然可以返回char 那将解决您的内存泄漏并跳过空白问题。

例:

char infile()
{
  std::ifstream readFile("text.txt");
  std::vector<std::string> v;
  std::string line;
  while(std::getline(readFile, line))
  {
    v.push_back(line);
  }                                      
  for(auto& s : v)
  {
      std::cout << s << std::endl;
  }
   return (v[0])[0];
}

您正在要求它在划定空格的位置进行读取。

您可以使用getline()保留空白。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM