我对编码完全陌生。我需要老兵的建议,因为我这样做是为了完成我的任务。
有没有办法读取由命令提示符 (CMD) 生成的字符串?
我的任务是创建一个代码来对所有网络执行 ping 操作,并可能通过文件输入/输出将 IP 地址分配为事件和非事件。
例如,我想从 cmd 复制一个字符串:
来自 192.168.0.1 的回复:bytes=32 time<1ms TTL=64 <- (这表示事件) 来自 192.168.0.2 的回复:目标主机不可达<-(这表示不活动)
如果我能够复制该行,我可以编写一个 If/Else 条件来分隔它们。如果有任何更简单的方法来改善这种情况,请帮助我。谢谢。
下面的代码是 ping 到 255 之前的所有 IP 地址,但我还需要 1 个函数来分隔事件 IP 地址和非事件 IP 地址。
using namespace std;
void main()
{
string ipAddress;
cout << "Enter the IPv4 address network..." << endl;
cout << "Example: 10.0.0. or 192.168.1." << endl;
getline(cin, ipAddress);
cout << "Please wait..." << endl;
string s = "ping " + ipAddress;
for (int x = 0; x <= 255; ++x)
{
stringstream ss;
ss << x << endl;
string newString = ss.str();
string finalString = s + newString;
system(finalString.c_str());
}
system("pause");
}
最佳答案
您可以使用popen
函数。此函数允许您读取命令的输出。
就像 Martin 在评论中所说的那样,在 Windows 上您将使用 _popen
,msdn doc :
msdn.microsoft.com/en-us/library/96ayss4b.aspx
从这个页面看 linux 的例子:
http://www.sw-at.com/blog/2011/03/23/popen-execute-shell-command-from-cc/
关于c++ - 有没有办法从 cmd 字符串中复制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39079073/