我有以下代码:
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;
}
程序读取整个文件,我知道这是因为打印了正确数量的索引。但是,没有数据,只是在每次打印“ i”之前换行。这是我在Windows中从excel保存的文件,正在Linux中阅读-这是我的问题吗?我的数据怎么了?
答案 0 :(得分:2)
答案 1 :(得分:0)
编辑:
对不起,我只是在解决明显的逻辑错误。
但是,这是读取文件行的理想版本:
#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';
}
}
答案 2 :(得分:0)
一种读取文件的更好方法:
std::string text_line;
std::vector<string> file_lines;
while (std::getline(file, text_line))
{
file_lines.push_back(text_line);
}
尽管不是最佳的速度,但它可以完成工作并且没有上限(除了允许的程序内存量以外)。