我有一个名为read.txt E:\My_project\dictionary database\read.txt
的文件,它看起来像
1245
15
12
454564
122
....
我想逐行读取read.txt,并希望将这些值保存到向量中,最后输出向量并将vector的值写入另一个名为write.txt的txt文件中,该文件与read相同。文本??我怎么能在C ++中做到这一点?
我试图从文件中读取这样的值:
ifstream ifs("read.txt", ifstream::in);
但是我不知道在哪里保留read.txt文件。read.txt和write.txt的位置应该是什么???
编辑: 如果我使用向量来保存文本输入我得到一个错误:
int textLine;
vector<int> input;
ifstream ifs("C:\\Users\\Imon-Bayazid\\Desktop\\k\\read.txt", ifstream::in);
if (ifs.good()) {
while (!ifs.eof()) {
getline(ifs, textLine);
input.push_back(textLine);
}
ifs.close();
} else
cout << "ERROR: can't open file." << endl;
for(int i=0;i<input.size();i++)
cout<<input.at(i);
答案 0 :(得分:1)
如果您的二进制文件位于E:\My_project
,则需要调整要打开的文件的路径:
ifstream ifs("./dictionary database/read.txt", ifstream::in);
请参阅this相关问题。
答案 1 :(得分:1)
由于文件名称已硬编码为"read.txt"
,因此该文件必须与可执行文件位于同一文件夹中。如果文件的位置不会改变,您可以硬编码完整路径:
ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in);
(注意加倍的反斜杠:C ++编译器将它们视为常规斜杠)。
答案 2 :(得分:1)
您可以在打开文件时给出文件的绝对路径:
ifstream ifs("E:\\My_project\\dictionary database\\read.txt", ifstream::in);
或者您可以移动可执行程序,该程序在文件所在的同一目录中读取文件。
编辑:
通过像这样声明你的向量:vector<int> input;
你创建了一个向量,你可以在其中存储整数值,但你从文件(textLine
)读取的是一个字符串。如果您只想将文件中的数字解释为整数值,则必须使用
input.push_back(atoi(textLine.c_str()));