逐行读取文件,并存储为字符串
Reading file line by line, and storing as a string
在这个程序中,我应该逐行读取程序,然后使用一些提供给我的函数,这些函数将提取字符串的一部分并将其发送到另一个函数。我在读取文件和"存储"时遇到问题
void histogram(const int MaxPages, istream& input, ostream& output)
{
CountedLocation *array[MaxPages];
int linenum = 0;
string temp;
//getline(input, linestring);
//output << linestring;
while (linenum < MaxPages)
{
string linestring = "";
getline(input, linestring);
//linenum++;
extractTheRequest(linestring);
if (isAGet(linestring) == true)
{
extractLocator(linestring);
linenum++;
output << linestring << endl;
output << "test1";
}
linenum++;
}
问题似乎是程序从未真正"读取"文件。我尝试在字符串 temp 初始化的正下方初始化线串,作为"字符串线串 = "f"。程序当然会将文本文件输出为几个串在一起的"f"。我尝试查看如何逐行读取它,但大多数人不使用 istream,并且不允许我编辑直方图功能之外的任何内容。if语句中关于"isAGet"的任何内容都没有真正"发生"。
我的问题是;如何逐行读取文本文件,然后将每一行存储到一个字符串中?我想也许我可以像下面这样循环进行,将行存储到临时流中,用它做我需要的事情,然后清除流以重复该过程。有没有另一种更容易的方法?我自己想不通。
代码应如下所示:
void histogram(const int MaxPages, istream& input, ostream& output) {
if (!input.good()) {
cerr << "File doesn't exist" << endl;
return;
}
string line;
for (int line_no = 0; getline(input, line); ++line_no) {
output << '"' << line << '"' << endl;
}
}
提到那些放在控制台上的报价。它们是为了表明,如果您的文件的最后一行为空,getline
将返回错误,并且work_with_that_line
不会被调用。这是getline
式文件输入的一个众所周知的问题。如果您关心,请考虑使用逐个字符或二进制输入。
不确定您的isAGet
和extractTheRequest
做什么,只能回答"如何逐行读取文本文件,然后将每一行存储到一个字符串中"
为什么不简单地这样呢?
std::vector<std::string> vec;
while ( std::getline(input, linestring) && (linenum < MaxPages ) )
{
//...
//Store into std::vector, if required
vec.push_back(linestring);
//.. use other calls
output << linestring ;
linenum++;
}
相关文章:
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 在向量 C++14(无限制联合)的结构内的联合中创建和存储字符串
- 如何存储字符串列表
- 在向量中存储字符串存在 SEG 错误
- 指针存储字符串?
- 逐个字母存储字符串并打印
- 将字符数组转换为字符串并存储字符串?
- 当分配动态内存以存储字符串副本时,程序会中断
- 在C/C++中存储字符串、数组和指针,哪种方法更有效
- 我们如何以 7 位格式存储字符串
- C 存储字符串输入为CString
- TVItem lparam存储字符串
- C++以相反的顺序存储字符串
- 如果存储字符串的char数组小于字符串,则C++实际存储字符串
- 为什么我的 SetBookTitle 不存储字符串
- 如何在 C 中有效地存储字符串的映射
- 如何使用好友运算符存储字符串
- 如何在 C++ 中存储字符串和整数串联的变量
- 如何在 c++ 中存储字符串数组
- 存储字符串