[英]Read from a file with blank spaces in C++
我正在读取文件,并将array(pointer)的前端传递回我的main函数。 我遇到的问题是它没有在单词之间复制空格。 例如, Hello Hello
以HelloHello
。
我从使用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::string
, std::vector
和std::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.