C++ getLine()返回换行符,不返回数据
我有以下代码:C++ getLine()返回换行符,不返回数据,c++,file,stream,C++,File,Stream,我有以下代码: const char *fn = fileName.c_str(); std::ifstream file (fn); std::vector<std::string> value(20000); int i = 0; while ( file.good() ) { getline ( file, value[i] ); i+=1; std::cout << v
const char *fn = fileName.c_str();
std::ifstream file (fn);
std::vector<std::string> value(20000);
int i = 0;
while ( file.good() )
{
getline ( file, value[i] );
i+=1;
std::cout << value[i]<< std::endl;
std::cout << i << std::endl;
}
const char*fn=fileName.c_str();
std::ifstream文件(fn);
标准:向量值(20000);
int i=0;
while(file.good())
{
getline(文件,值[i]);
i+=1;
标准::cout编辑:
抱歉,我只是在修复明显的逻辑错误
但是,以下是读取文件行的理想版本:
#include <iostream>
#include <fstream>
#include <vector>
int main() {
std::ifstream file {"test.txt"};
std::vector<std::string> values;
std::string temp;
while (getline(file, temp)) {
values.push_back(temp);
}
for (int i = 0; i < values.size(); ++i) {
std::cout << values[i] << '\n' << i << '\n';
}
}
#包括
#包括
#包括
int main(){
std::ifstream文件{“test.txt”};
std::向量值;
std::字符串温度;
while(getline(文件,临时)){
值。推回(温度);
}
对于(int i=0;i
抱歉,我只是在修复明显的逻辑错误
但是,以下是读取文件行的理想版本:
#include <iostream>
#include <fstream>
#include <vector>
int main() {
std::ifstream file {"test.txt"};
std::vector<std::string> values;
std::string temp;
while (getline(file, temp)) {
values.push_back(temp);
}
for (int i = 0; i < values.size(); ++i) {
std::cout << values[i] << '\n' << i << '\n';
}
}
#包括
#包括
#包括
int main(){
std::ifstream文件{“test.txt”};
std::向量值;
std::字符串温度;
while(getline(文件,临时)){
值。推回(温度);
}
对于(int i=0;i std::cout读取文件的更好方法:
std::string text_line;
std::vector<string> file_lines;
while (std::getline(file, text_line))
{
file_lines.push_back(text_line);
}
std::字符串文本\u行;
std::矢量文件行;
while(std::getline(文件、文本行))
{
文件行。向后推(文本行);
}
虽然速度不是最佳的,但它完成了任务,并且没有上限(程序允许的内存量除外)。读取文件的更好方法:
std::string text_line;
std::vector<string> file_lines;
while (std::getline(file, text_line))
{
file_lines.push_back(text_line);
}
std::字符串文本\u行;
std::矢量文件行;
while(std::getline(文件、文本行))
{
文件行。向后推(文本行);
}
虽然速度不是最优的,但它完成了任务,并且没有上限(程序允许的内存量除外)
没有数据,只是在每次打印“i”之前有一行新行
因为您在访问值[i]
之前增加了i
在访问值[i]
之后立即递增可以解决数据丢失的问题
没有数据,只是在每次打印“i”之前有一行新行
因为您在访问值[i]
之前增加了i
在访问值[i]
之后立即递增可以解决数据丢失的问题
这不是读取文件的方式。您需要测试getline的返回值。请尝试while(getline(file,value[i])
。那么,为什么这个答案可以解决丢失数据的问题,这不是一种稍微干净一点的方法来做同样的事情吗?这不是读取文件的方式。您需要测试getline的返回值。请尝试while(getline(文件,值[i]))
。那么为什么这个答案可以解决数据丢失的问题呢?这不仅仅是做同样事情的一种稍微干净一点的方法吗?谢谢,但这如何解决数据丢失的问题呢?谢谢,但这如何解决数据丢失的问题呢?更准确地说,i
在写入和读取值[i]之间递增
(将增量上移一行也应该固定输出,尽管代价是值[0]
未使用。)更准确地说,i
在值[i]
的写入和读取之间递增(将增量上移一行也应该固定输出,尽管代价是值[0]
未使用。)