从C++中带有空格的文件读取
Read from a file with blank spaces in C++
我正在从文件中读取并将数组(指针)的前面传递回我的主函数。 我遇到的问题是它没有复制单词之间的空格。例如,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() 来保留空格。
相关文章:
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量