我有一个读取文件并处理它的 C++ 任务:
// A.m.cpp
std::string filename = "myfile.txt";
std::ifstream file(filename.c_str());
std::ifstream file1(filename.c_str());
std::string line1;
while(getline(file1, line1)){
// process some logic
}
for(;;){
file.getline(buffer);
if (file.eof()) break;
// process some other logic
}
我有一个 python 脚本来设置测试数据并运行任务:
import unittest
def test_A():
file='myfile.txt'
with open(file, 'w') as filetowrite:
filetowrite('testdata')
subprocess.run(["A.tsk"])
但是,当我运行 python 脚本并执行 c++ 任务时,第一个 while 循环有效,但 for 循环只是在此处中断 eof 的 bc :
for(;;){
file.getline(buffer); // buffer is "testdata"
if (file.eof()) break; // it breaks even buffer is "testdata"
// process some other logic
}
我打印了buffer它,它有“testdata”,但是它只是在下一行中断,所以它没有得到处理,这不是我想要的。但是,如果我不使用 pythonsubprocess运行它,也不使用 Python 设置测试数据,而只是手动echo testdata >> myfile.txt编译A.m.cpp和运行A.tsk,则它不会中断 for 循环并成功处理“testdata”。出什么问题了subprocess?为什么有内容eof也会触发?buffer
牧羊人nacy
相关分类