【发布时间】:2012-02-08 11:16:16
【问题描述】:
我直接回答这个问题。我通过逐行读取文件然后合并字符串来做到这一点,但需要一个很好的解释如何使用向量来做到这一点。我的目标是使用系统命令(Windows XP、7)来检查目录内容并将它们直接发送到“vector sysoutp”作为示例,然后将其与第二个文件中的信息合并到新文件中。有什么想法吗?
只是我代码的一部分:
while (getline(myinputfile, line))
{
lines++;
found = line.find(countchars);
if (found!=string::npos)
{
line.erase(int(found) + 4);
myoutputfile << line << endl;
}
}
myinputfile 中填充了“syscomm”,这个想法是用向量进行转换,但显然当我尝试做类似getline(cin, tmp) 的事情时,“cin”是 syscomm 没有任何反应(嗯,错误弹出窗口):(
我在使用这个预处理指令时也有错误
#define syscomm system("dir /b | find /i /v ".exe .txt"):
createlist.cpp|15|warning: missing terminating " character [enabled by default]|
createlist.cpp|53|error: missing terminating " character|
createlist.cpp||In function 'int main()':|
createlist.cpp|53|error: request for member 'exe' in '"dir /b | find /i /v "', which is of non-class type 'const char [21]'|
||=== Build finished: 2 errors, 1 warnings ===|
它可以在不添加“| find ...”的情况下工作,但使用它我可以使用已知扩展名过滤不需要的文件名。
感谢合作,对二合一问题包感到抱歉:)
【问题讨论】:
-
请一次一个问题。
-
那么从命令输出中逐行读取并将它们插入向量中以进行以下排序操作的基本算法是什么?我知道如何进行排序,但阅读内容很难理解......做了:
while (!inputcomm.eof()) { sortedvector.push_back(inputcomm.getline(buffer, 10)); } sort(sortedvector.begin(), sortedvector.end()); pclose(inputcomm); return sortedvector;其中 inputcomm 是例如FILE *inputcomm = popen("dir /b | findstr /i \"\\<*.sd\"", "rt");:(
标签: c++ string file vector merge