Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何逐行将文件读入矢量,然后打印矢量_C++_File_File Io_Fileinputstream - Fatal编程技术网

C++ 如何逐行将文件读入矢量,然后打印矢量

C++ 如何逐行将文件读入矢量,然后打印矢量,c++,file,file-io,fileinputstream,C++,File,File Io,Fileinputstream,我试图读入一个文件,将每一行添加到一个向量中,然后打印向量。 但现在,它只会打印第一行。因此,我假设第一行是唯一一条添加到向量的行,但我不知道为什么 这是我的密码: #包括 #包括 #包括 #包括 使用名称空间std; int main() { std::矢量向量; std::ifstream fileIn(“example.txt”); std::字符串str; std::字符串换行符; 换行符=str+“\n”; while(std::getline(fileIn,str)){ std::字

我试图读入一个文件,将每一行添加到一个向量中,然后打印向量。 但现在,它只会打印第一行。因此,我假设第一行是唯一一条添加到向量的行,但我不知道为什么

这是我的密码:

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
std::矢量向量;
std::ifstream fileIn(“example.txt”);
std::字符串str;
std::字符串换行符;
换行符=str+“\n”;
while(std::getline(fileIn,str)){
std::字符串换行符;
换行符=str+“\n”;
如果(换行符.size()>0){
向后推(换行);
}
fileIn.close();
对于(int i=0;i
  • 在读取第1行后,您正在
    close()
    ”处理文件流,从而在第一次迭代后中断循环

  • 将每行添加到向量后,您将打印整个向量

此外,您根本不需要
换行符
变量

请尝试以下方法:

#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
std::矢量向量;
std::ifstream fileIn(“example.txt”);
std::字符串str;
while(std::getline(fileIn,str)){
如果(str.size()>0){
向后推(str);
}
}
fileIn.close();
对于(size_t i=0;iSTD::你希望通过在循环的第一次迭代中间关闭文件,然后打印你的向量,你的向量现在包含你读到的第一行,并且因为文件现在关闭了,所以从文件中读取第二行的尝试现在失败了吗?为什么你要告诉你的计算机做E?确切地说,如果您的目的是在关闭文件之前先读取整个文件,请记住计算机编程的黄金法则:您的计算机将始终完全按照您的要求执行,而不是按照您的要求执行。我强烈建议添加
-Wshadow
编译器选项,以及
-Wall-Wextra-pedantic
(在gcc/clang下)或VS的
/W3
,并且在代码编译之前不要接受代码。谢谢,这很有效。我没有发现那些代码在循环中。
Barry Sanders
1516 1319 1108 1875 -999
Emmitt Smith
1892 1333 1739 1922 1913 1733 -999
Walter Payton
1999 1827 1725 1677 -999