【发布时间】:2014-12-02 14:48:18
【问题描述】:
我正在尝试将 txt 文件拆分为几个新文件。这就是我到目前为止所做的:
long c = 0;
string s;
vector<string> v;
我需要计算我的 txt 文件有多少行(它有效):
while(getline(inputFile, s, '\n')){
v.push_back(s);
c++;
}
long lineNumber = c;
long max = 100;
long nFiles;
检查将创建多少新文件:
if((lineNumber % max) ==0)
nFiles = lineNumber/max;
else
nFiles = lineNumber/max + 1;
创建文件的新名称:
long currentLine = 0;
for(long i = 1; i <= nFiles; i++){
stringstream sstream;
string a_i;
sstream <<i;
sstream >> a_i;
string outputfiles = "name" +"_" + a_i +".txt";
ofstream fout(outputfiles.c_str());
for (int j = currentLine; j<max; j++){
fout << v[j]<<endl;
}
fout.close();
currentLine = max;
}
inputFile.close();
它会创建文件但突然停止工作。有谁知道为什么?
【问题讨论】:
-
您是否在调试器中运行过您的代码?它在代码中的什么地方停止工作?
-
是的,我做到了。这是我得到的:“程序收到信号 sigsegv 分段错误”
-
发生分段错误的地方应该有一个行号。
-
就是那一行:fout
-
当您在调试器中收到该消息时,您还会被告知是哪一行代码导致了问题。您有机会检查存储在变量中的值。听起来你现在能知道的最有价值的事情不是解决这个问题,而是如何使用调试器。