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;i STD::你希望通过在循环的第一次迭代中间关闭文件,然后打印你的向量,你的向量现在包含你读到的第一行,并且因为文件现在关闭了,所以从文件中读取第二行的尝试现在失败了吗?为什么你要告诉你的计算机做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