我试图将一些字符串数据写入我从用户读取的.txt文件中,但是这样做之后,该程序关闭而不是继续运行,当我检查.txt文件中的结果时,我看到了数据,然后出现一些乱码,接着是断言失败错误!这是代码:
#include "std_lib_facilities.h"
#include <fstream>
using namespace std;
using std::ofstream;
void beginProcess();
string promptForInput();
void writeDataToFile(vector<string>);
string fileName = "links.txt";
ofstream ofs(fileName.c_str(),std::ofstream::out);
int main() {
// ofs.open(fileName.c_str(),std::ofstream::out | std::ofstream::app);
beginProcess();
return 0;
}
void beginProcess() {
vector<string> links;
string result = promptForInput();
while(result == "Y") {
for(int i=0;i <= 5;i++) {
string link = "";
cout << "Paste the link skill #" << i+1 << " below: " << '\n';
cin >> link;
links.push_back(link);
}
writeDataToFile(links);
links.clear(); // erases all of the vector's elements, leaving it with a size of 0
result = promptForInput();
}
std::cout << "Thanks for using the program!" << '\n';
}
string promptForInput() {
string input = "";
std::cout << "Would you like to start/continue the process(Y/N)?" << '\n';
std::cin >> input;
return input;
}
void writeDataToFile(vector<string> links) {
if(!ofs) {
error("Error writing to file!");
} else {
ofs << "new ArrayList<>(Arrays.AsList(" << links[0] << ',' << links[1] << ',' << links[2] << ',' << links[3] << ',' << links[4] << ',' << links[5] << ',' << links[6] << ',' << "));\n";
}
}
问题可能出在ofstream编写过程的某处,但我无法弄清楚。有什么想法吗?
答案 0 :(得分:2)
您似乎正在填充6个元素的向量,索引为0-5,但是在writeDataToFile函数中取消引用链接[6],这超出了原始向量的范围。
另一件事与您的问题无关,但是很好的做法:
void writeDataToFile(vector<string> links)
声明了一个执行矢量复制的函数。除非您要专门复制输入向量,否则您很可能希望传递一个const引用,例如tso:
void writeDataToFile(const vector<string>& links)